Подтвердить что ты не робот

Получить длину массива JSON.Net

Как я могу получить длину массива JSON, который я получаю с помощью json.net в С#? После отправки вызова SOAP я получаю строку JSON в качестве ответа, я использую 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. Я только не знаю, как я могу получить длину test["JSONObject"]

Но что-то вроде test["JSONObject"].Length была бы слишком простой, я думаю :(..

4b9b3361

Ответ 1

Вы можете передать объект в 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
}

В соответствии с Onno (OP) вы также можете использовать следующее:

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

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

Ответ 2

Вы можете использовать строку ниже, чтобы получить длину массива JSON в .Net(JArray).

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

Ответ 3

Просто попробуйте это:

var test= ((Newtonsoft.Json.Linq.JArray)json).Count;