2015-07-28 4 views
5

У меня возникли проблемы с получением данных из моего JArray, в частности, я пытаюсь получить доступ к значению идентификатора. Вот пример JSONПолучение значений из JArray в JSON.net

{ 
"page": 1, 
"totalPages": 5, 
"pageSize": 2, 
"sortField": "label", 
"sortOrder": "asc", 
"content": [ 
    { 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1" 
    }, 
    { 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2" 
    } 
] 
} 

И вот что у меня есть в C#

 JArray jArray = new JArray(jsonString); 

     foreach (JValue item in jArray) 
     { 
      Console.WriteLine(item["id"]); 
     } 

Я знаю, что нужно проверить JValue, чтобы убедиться, что это тип ID, но я запутался на объекте типы, назначенные после его разбиения на JArray.

+0

http://stackoverflow.com/questions/18638640/json-net-using-selecttoken-to-get-a-value-not-know-an-element-name проверьте это – FirebladeDan

+0

, вы можете использовать 'JToken.Parse (string)' метод. –

ответ

5

Прежде всего, вы имеете дело с объектом на верхнем уровне. После анализа объекта, вы должны смотреть на content массива:

var obj = JObject.Parse(json); 

foreach (JObject element in obj["content"]) 
{ 
    Console.WriteLine(element["id"]); 
} 

Вот пример: https://dotnetfiddle.net/DhVZFf

Кроме того (и это может быть просто опечатка), ваш JSON имеет неверный формат. В частности, разделенные разделения элементов в массиве content находятся в неправильном месте:

{ 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1", // <--- 
} 
{ 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2", 
} 

Эти запятые должны быть между элементы массива:

{ 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1" 
}, // <--- 
{ 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2" 
} 
Смежные вопросы