在C#中将字符串的JARray从JObject转换为字符串数组

问题描述 投票:0回答:1

我有一个JSON,其中一部分包含一个字符串值

 "parent_crumbs": [
    "Platforms",
    "STATS , EXPE , ESTAP",
    "Portal"
],

我使用下面的代码从JSON对象中读取值

 JObject _task; //parse the JSON to JOBJECT first               
 string values=    (string)_task["parent_crumbs"].ToString();

这将返回带方括号和所有引号的字符串。

我怎样才能将它转换为C#中的字符串数组

我可以删除[和]然后拆分,但是当字符串项中间存在时,整个假设将会中断。所有可用的方法都可以从JArray读取到String Array

c# json json.net
1个回答
0
投票

你没有发布完整的json字符串,所以让我们假设它是这样的:

{
    "id": 123,
     "parent_crumbs": [
        "Platforms",
        "STATS , EXPE , ESTAP",
        "Portal"
    ]
}

您可以创建与此结构匹配的C#模型,如下所示:

public class Data
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("parent_crumbs")]
    public List<string> ParentCrumbs { get; set; }
}

然后将json字符串反序列化为Data类的实例:

string json = @"{
    ""id"": 123,
     ""parent_crumbs"": [
        ""Platforms"",
        ""STATS , EXPE , ESTAP"",
        ""Portal""
    ]
}";

Data data = JsonConvert.DeserializeObject<Data>(json);

foreach (string crumb in data.ParentCrumbs)
{
    Console.WriteLine(crumb);
}

EDIT

您可以执行以下操作,而不是反序列化整个json字符串:

string json = @"{
    ""id"": 123,
     ""parent_crumbs"": [
        ""Platforms"",
        ""STATS , EXPE , ESTAP"",
        ""Portal""
    ]
}";

JObject data = JObject.Parse(json);
JToken crumbsToken = data.GetValue("parent_crumbs");
List<string> crumbs = JsonConvert.DeserializeObject<List<string>>(crumbsToken.ToString());

// alternative way to get the string values, as suggested by @BrianRogers
List<string> crumbs = crumbsToken.ToObject<List<string>>();
© www.soinside.com 2019 - 2024. All rights reserved.