Получить длину массива 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
была бы слишком простой, я думаю :(..
Ответы
Ответ 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;