Eu tenho um JSON como este
{
"Customer": {
"$type": "Dictionary`2",
"Id": "6448DE37E2F3D9588118A1950"
},
"Databases": [
{
"$type": "Pime",
"Id": 1,
"Name": "Peter",
"MobNo": 78877629,
"PAN": "SAKKJKJ",
"Defaulter": true,
},
{
"$type": "Pime",
"Id": 2,
"Name": "James",
"MobNo": 58277699,
"PAN": "NAQKJKJ",
"Defaulter": false,
},
{
"$type": "Pime",
"Id": 3,
"Name": "Norton",
"MobNo": 38877699,
"PAN": "TAKKJKJ",
"Defaulter": true,
},
]
}
Estou usando um token para selecionar o nó e retornar as informações do cliente cujo Id = 2
Meu código é assim:
StreamReader r = new StreamReader("C:\TestJson\Test.db");
string json = r.ReadToEnd();
JObject o = JObject.Parse(json);
JToken result = o.SelectToken("$.Databases[?(@.Id == '2')]");
Mas estou obtendo o resultado como nulo. Estou usando o token errado no método SelectToken ()?
Em primeiro lugar, o JSON fornecido é inválido, no database
valor da matriz de Name
e as PAN
chaves devem ser do tipo string
. Você está faltando "
(perguntas duplas) no json acima.
Segundo e mais importante, o tipo de Id
é um inteiro e em seu caminho Json você está tentando pesquisar com o tipo de string '2'
, ou seja , tentar pesquisar Id
por inteiro sem quoute funcionará.
//No single qoutes for 2.
JToken result = o.SelectToken("$.Databases[?(@.Id == 2)]");
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras