如何按键获取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();
            }

        }
 }