C# 如何通过键获取JArray字典的值
我有一个json字符串:C# 如何通过键获取JArray字典的值,c#,unity3d,mono,virtual-reality,C#,Unity3d,Mono,Virtual Reality,我有一个json字符串: [ [ { "Antibiotic after diagnosis":[ "Azithromycin", "Ciprofloxacin HCl", "Ampicillin Sodium" ], "City":[ "Tel Aviv", "Jerusalem" ]
[
[
{
"Antibiotic after diagnosis":[
"Azithromycin",
"Ciprofloxacin HCl",
"Ampicillin Sodium"
],
"City":[
"Tel Aviv",
"Jerusalem"
]
}
],
[
{
"Antibiotic after diagnosis":"Azithromycin",
"City":"Tel Aviv"
},
{
"Antibiotic after diagnosis":"Ciprofloxacin HCl",
"City":"Jerusalem"
}
]
]
我反序列化了此字符串:
data = Newtonsoft.Json.JsonConvert.DeserializeObject<List<object>>("*json str*");
JParameters = data[0] as JArray;
Debug.Log(JParameters["Antibiotic after diagnosis"]);
data=Newtonsoft.Json.JsonConvert.DeserializeObject(“*Json str*”);
JParameters=数据[0]为JArray;
Log(JParameters[“诊断后抗生素]);
但是,当我运行代码时,它在代码行(Debug.Log(JParameters[“诊断后抗生素”];)上崩溃,出现以下错误:
ArgumentException:访问的JArray值的键值无效:“诊断后抗生素”。应为Int32数组索引
在错误状态下,
JParameters
的索引应为整数。您想要的是:j参数[0][“诊断后抗生素”]
上面的代码选择第一个元素,然后选择字典键“诊断后抗生素”的值
我建议阅读以正确理解JSON的工作原理。错误状态下,
JParameters的索引应该是一个整数。您想要的是:
j参数[0][“诊断后抗生素”]
上面的代码选择第一个元素,然后选择字典键“诊断后抗生素”的值
我建议阅读本文以正确理解JSON的工作原理。一个选项是从Jproperty获取键和值
var files = JArray.Parse(YourJSON);
foreach (JArray item in files.Children())
{
foreach (JObject obj in item.Children())
{
foreach (JProperty prop in obj.Children())
{
string key = prop.Name.ToString();
string value = prop.Value.ToString();
}
}
}
一个选项是从Jproperty获取键、值
var files = JArray.Parse(YourJSON);
foreach (JArray item in files.Children())
{
foreach (JObject obj in item.Children())
{
foreach (JProperty prop in obj.Children())
{
string key = prop.Name.ToString();
string value = prop.Value.ToString();
}
}
}
JParameters=数据[0]为JArray代码>->您有一个数组。“诊断后抗生素”是该数组中每个项目的属性,而不是数组的属性(数组本身不能有属性),因此会出现错误。您希望接收什么?每个对象的“诊断后抗生素”值还是仅第一个?@razerez取决于您想要的结果……仔细看,json是一个包含两个参数的列表,第一个是列表字典,第二个是字典列表我想获得数据[0]->“诊断后抗生素”中第一项的值这就是“阿奇霉素”JP参数[0][“诊断后抗生素”]是你想要的。在数组JParameters=data[0]中有另一个数组作为JArray代码>->您有一个数组。“诊断后抗生素”是该数组中每个项目的属性,而不是数组的属性(数组本身不能有属性),因此会出现错误。您希望接收什么?每个对象的“诊断后抗生素”值还是仅第一个?@razerez取决于您想要的结果……仔细看,json是一个包含两个参数的列表,第一个是列表字典,第二个是字典列表我想获得数据[0]->“诊断后抗生素”中第一项的值这就是“阿奇霉素”JP参数[0][“诊断后抗生素”]是你想要的。你有另一个数组在arrayNo需要不友好,特别是如果你的答案也是错误的JParameters=data[0]为JArray
,因此已经是最外层列表的第一个元素。@derpirscher我已经标记了您的注释。亚伦的回答是中立的,不是不友好的。然而,你自己评论的语气是不友好的。@derpirscher我明白你的意思。我按原样测试了上面的JSON数组,没有考虑数据[0]
行。我已经更新了我的answer@john就我个人而言,我读了一个答案,比如“读x来正确理解y是如何工作的”,但没有指出一个具体的错误,比如“你太笨了,所以我不会花时间来解释”,为什么我的评论不友好?它至少和艾伦的一样中性s@derpirscher基于之前的交流,我将不作进一步评论。如前所述,他的回答是中立的。没有必要不友好,尤其是如果你的回答也是错误的JParameters=data[0]为JArray
,因此已经是最外层列表的第一个元素。@derpirscher我已经标记了您的注释。亚伦的回答是中立的,不是不友好的。然而,你自己评论的语气是不友好的。@derpirscher我明白你的意思。我按原样测试了上面的JSON数组,没有考虑数据[0]
行。我已经更新了我的answer@john就我个人而言,我读了一个答案,比如“读x来正确理解y是如何工作的”,但没有指出一个具体的错误,比如“你太笨了,所以我不会花时间来解释”,为什么我的评论不友好?它至少和艾伦的一样中性s@derpirscher基于之前的交流,我将不作进一步评论。如前所述,他的回答是中立的。