在C#中将字符串的JARray从JObject转换为字符串数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中将字符串的JARray从JObject转换为字符串数组相关的知识,希望对你有一定的参考价值。
我有一个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
答案
你没有发布完整的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>>();
以上是关于在C#中将字符串的JARray从JObject转换为字符串数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在不添加新 JObject 键/名称的情况下将 JArray 添加到 JObject 中?
c# 读取json的问题,JObject不能强转成JArray