2013-09-26 3 views
22

Как я могу получить длину массива JSON, который я получаю с помощью json.net в C#? После отправки SOAP-запроса я получаю строку JSON в качестве ответа, я использую json.net для ее анализа.Получить длину массива JSON.Net

Пример JSON я получил:

{"JSONObject": [ 
    {"Id":"ThisIsMyId","Value":"ThisIsMyValue"}, 
    {"Id":"ThisIsMyId2","Value":"ThisIsMyValue2"} 
]} 

И я разобрать его и записать его в консоли:

var test = JObject.Parse (json); 
Console.WriteLine ("Id: {0} Value: {1}", (string)test["JSONObject"][0]["Id"], (string)test["JSONObject"][0]["Value"]); 

Это работает как заклинание, только я не знаю длину JSONObject, но мне нужно сделать это в цикле for. Я не только не знаю, как я могу получить длину «тест [» JSONObject «]»

Но что-то вроде теста [ «JSONObject»]. Длина было бы слишком легко я думаю :(..

ответ

39

Вы может привести объект к JArray, а затем использовать Count свойство, например, так:

JArray items = (JArray)test["JSONObject"]; 
int length = items.Count; 

Вы можете петлевые элементы следующим образом:

for (int i = 0; i < items.Count; i++) 
{ 
    var item = (JObject)items[i]; 
    //do something with item 
} 

Согласно Онно (OP), вы также можете использовать следующие:

int length = test["JSONObject"].Count(); 

Однако я лично не подтвердил, что это будет работать

+0

Вам не нужно подавать в 'JArray' для что? – svick

+0

Я пробовал это, как я видел это где-то еще. Но иногда я не пытался использовать Count() вместо того, что, похоже, работает. Мне очень жаль мою глупость: O – Onno

+0

@ Не знаю: Вы говорите, что 'Count()' работает? Если да, я могу обновить ответ – musefan

Смежные вопросы