У вас есть несколько возможности (как уже было показано в других ответах). Другой возможностью было бы использовать JObject
и JProperty
свойства, обеспечиваемые из Json.NET для того, чтобы непосредственно получить значение, как это:
var jsonObject = (JObject)JsonConvert.DeserializeObject(json);
var unashamedohio = (JObject)(jsonObject.Property("unashamedohio").Value);
var summonerLevel = unashamedohio.Property("summonerLevel");
Console.WriteLine(summonerLevel.Value);
Еще одна возможность будет создать типизированный модель структуры JSON:
public class AnonymousClass
{
public UnashamedOhio unashamedohio { get; set; }
}
public class UnashamedOhio
{
public int summonerLevel { get; set; }
}
и использовать его для получения значения:
var ao = JsonConvert.DeserializeObject<AnonymousClass>(json);
Console.WriteLine(ao.unashamedohio.summonerLevel);
Оба раствора печатать то же самое значение: 30
.
IMO вы должны использовать всегда типизированные модели, если это возможно, и если вы делаете много полезной информации из структур JSON. Он обеспечивает проверку ошибок в среде IDE (в отличие от динамической), которая выплачивается во время выполнения.
Существует множество вопросов о переполнении стека о разборе JSON. Вы можете проанализировать его до объекта, в котором вы создали соответствующий класс, или использовать «LINQ to JSON» от Json.NET или любое количество вещей. Пожалуйста, покажите, что вы пробовали. –
Вы можете искать в строке. Другой альтернативой может быть десериализация на другой объект только с данными, которые вам нужны, но это тоже не отличная идея. Есть ли причина, по которой вы не можете десериализовать JSON в целый объект, а затем просто проверьте значение на объекте? – Mathieson