在 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读取到字符串数组

您没有发布完整的 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);
}

编辑

您可以执行以下操作,而不是反序列化整个 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>>();

相关内容

  • 没有找到相关文章

最新更新