如何按键获取JArray字典的值
How to get value of JArray dictionary by key
我有这个 json 字符串:
[
[
{
"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"]);
但是当我 运行 代码时它在行 (Debug.Log(JParameters[[=19=]]);) 上崩溃并出现以下错误:
"ArgumentException: Accessed JArray values with invalid key value: "Antibiotic after diagnosis". Int32 array index expected."
JParameters
中的索引应为错误状态中的整数。你想要的是:
JParameters[0]["Antibiotic after diagnosis"]
上面的代码选择第一个元素,然后选择字典键的值"Antibiotic after diagnosis"。
我建议阅读 w3schools JSON 以正确理解 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();
}
}
}
我有这个 json 字符串:
[
[
{
"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"]);
但是当我 运行 代码时它在行 (Debug.Log(JParameters[[=19=]]);) 上崩溃并出现以下错误:
"ArgumentException: Accessed JArray values with invalid key value: "Antibiotic after diagnosis". Int32 array index expected."
JParameters
中的索引应为错误状态中的整数。你想要的是:
JParameters[0]["Antibiotic after diagnosis"]
上面的代码选择第一个元素,然后选择字典键的值"Antibiotic after diagnosis"。
我建议阅读 w3schools JSON 以正确理解 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();
}
}
}