Qual é o equivalente JSON.NET de de XML XPath, SelectNodes, SelectSingleNode?

StackOverflow https://stackoverflow.com/questions/1698175

  •  18-09-2019
  •  | 
  •  

Pergunta

Actualmente, a estrutura das minhas usa código XmlDocument aos dados de carga XML e SelectNodes para percorrer uma lista de repetir itens.

Para cada elemento, estou usando XmlNode.SelectSingleNode para escolher os elementos de campo.

Agora eu quero usar JSON.NET para alcançar os mesmos resultados com documentos entregues a mim como JSON. A resposta pode ser algo diferente do JSON.net, desde que de C # integrável.

Foi útil?

Solução

Json.NET tem SelectToken. Ele usa uma sintaxe semelhante à DataBinder.Eval para obter JSON via uma expressão de cadeia:

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");

Ou se você quiser selecionar vários valores:

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();

Documentação: Consultando JSON com SelectToken

Outras dicas

Você tem uma hierarquia de objeto que você pode mapear o JSON? Você poderia criar uma árvore de objetos (ou seja deserialize o JSON), e usar Where, SelectMany do LINQ, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top