Как получить значение словаря JArray по ключу - PullRequest
0 голосов
/ 03 июля 2018

У меня есть строка 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 ["Antibiotic after диагностика"]);) со следующей ошибкой:

«ArgumentException: Доступ к значениям JArray с недопустимым значением ключа:« Антибиотик после диагностики ». Ожидается индекс массива Int32.»

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Один из вариантов - получить ключ, значение из 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();
            }

        }
 }
0 голосов
/ 03 июля 2018

Индекс в JParameters должен быть целым числом в качестве состояния ошибки. То, что вы хотите:
JParameters[0]["Antibiotic after diagnosis"]

Приведенный выше код выбирает первый элемент, а затем выбирает значение для словарного ключа «Антибиотик после диагностики».

Я рекомендую прочитать w3schools JSON , чтобы правильно понять, как работает JSON.

...