如何通过键获取JArray字典的值

时间:2018-07-03 12:50:35

标签: c# unity3d mono virtual-reality

我有这个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 [“诊断后抗生素”]);)上崩溃,并显示以下错误:

  

“ ArgumentException:使用无效键值访问的JArray值:“诊断后使用抗生素”。预期为Int32数组索引。”

2 个答案:

答案 0 :(得分:1)

services.AddIdentityCore<ApplicationUser>(o => { // Identity config }) .AddSignInManager() .AddDefaultTokenProviders() .AddEntityFrameworkStores<YourContext>(); services.ConfigureApplicationCookie(o => { o.LoginPath = "/signin"; o.LogoutPath = "/signout"; o.AccessDeniedPath = "/signin"; o.ReturnUrlParameter = "returnUrl"; }); 的索引应为整数,因为错误状态如此。您想要的是:
JParameters

上面的代码选择第一个元素,然后为字典键“诊断后抗生素”选择值。

我建议阅读w3schools JSON以正确理解JSON的工作原理。

答案 1 :(得分:1)

一种选择是从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();
            }

        }
 }