Прежде всего, я бы посоветовал не использовать dynamic
, так как это вызовет у вас головную боль. Если вы все равно собираетесь работать с JObjects
и JArrays
, то лучше использовать эти типы напрямую. Компилятор сможет раньше обнаружить ошибки, и вы получите помощь Intellisense в Visual Studio. Итак, проанализируйте ваш JSON следующим образом:
JObject rootObject = JObject.Parse(jsonResult);
Отсюда вы можете получить массив результатов. (Вы вызывали этот массив x
в своем коде, но я думаю, resultsArray
- это более описательное имя переменной):
JArray resultsArray = (JArray)rootObject["results"];
Как и любой массив, если вы хотите получить определенный элемент, вынужно использовать свой индекс. Мы можем получить первый элемент массива (это объект, содержащий данные Люка Скайуокера) следующим образом:
JObject characterObject = (JObject)resultsArray[0];
Оттуда вы можете получить свойство films
, которое также является JArray
:
JArray filmsArray = (JArray)characterObject["films"];
Чтобы получить длину JArray
, вы используете свойство Count
:
numberOfFilms = filmsArray.Count;
Fiddle: https://dotnetfiddle.net/iFAWB4
Теперь, когда выпошагово разбирайтесь в объектах и массивах, я покажу вам небольшой ярлык, метод SelectToken()
. Этот метод позволяет вам указать «путь» для получения конкретного JToken
(JObject
и JArray
- оба типа JTokens
). Итак, после синтаксического анализа вашего JSON вы можете получить массив films
непосредственно следующим образом:
JArray filmsArray = (JArray)rootObject.SelectToken("results[0].films");
, а затем получить его количество, как и раньше.
Fiddle: https://dotnetfiddle.net/zOdSFs