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

Что такое эквивалент JSON.NET XML XPath, SelectNodes, SelectSingleNode?

В настоящее время в структуре моего кода используется XmlDocument для загрузки данных Xml, а затем SelectNodes для повторения списка повторяющихся элементов.

Для каждого элемента я использую XmlNode.SelectSingleNode для выделения элементов поля.

Теперь я хочу использовать JSON.NET для достижения тех же результатов с документами, переданными мне как JSON. Ответ может быть чем-то иным, чем JSON.net, если он совместим с С#.

4b9b3361

Ответ 1

Json.NET имеет SelectToken. Он использует синтаксис, похожий на DataBinder.Eval, чтобы получить JSON через строковое выражение:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff'},{'Name':'Joe'}]}");

// get name token of first person and convert to a string
string name = (string)o.SelectToken("People[0].Name");

Или, если вы хотите выбрать несколько значений:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff','Roles':['Manager', 'Admin']}]}");

// get role array token of first person and convert to a list of strings
IList<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList();

Документация: Запрос JSON с помощью SelectToken

Ответ 2

Есть ли у вас иерархия объектов, которую вы можете отобразить JSON? Вы можете создать дерево объектов (т.е. Десериализовать JSON) и использовать LINQ Where, SelectMany и т.д.