2012-04-25 30 views
5

tengo JSON que se parece a:json.net SelectToken con "." Incorporado.

myjson = {"queries":{"F.SP": 27}} 

por lo que con

queryResults = JObject.Parse(jsonString) 

que puedo hacer

firstToken = queryResults.SelectToken("queries") 

y volver al LinqJToken

{"F.SP": 27} 

pero yo m luego atascado, porque cuando intento

subToken = firstToken.SelectToken("F.SP") 

obtengo nada. Supongo que esto se debe a que JSON.net está buscando un token "F" con subtoken "SP".

También he probado cada uno de los siguientes, en vano

myToken = queryResults.SelectToken("queries.F.SP")  
myToken = queryResults.SelectToken("queries[0].F.SP")  

(queryResults.SelectToken ("consultas [0]") no devuelve nada, Fwiw)

¿Alguna idea?

EDITAR: He verificado que el "." Incrustado. es el problema; si cambio el JSON original al

{"queries":{"FSP": 27}} 

que puedo hacer

queryResults.SelectToken("queries").SelectToken("FSP") 

ningún problema

Respuesta

3

Esto no va a volver el testigo de sí mismo, pero devolverá el valor (que es probablemente lo que está buscando de todos modos) ...

queryResults.SelectToken("queries").Value<int>("F.SP"); 
0
JObject obj = JObject.Parse(jsonstring); 
var fsp = obj["queries"].First().First(); 

No es el más elegante, pero obtiene el valor.

1

En lugar de tratar de utilizar SelectToken, ¿qué tal una búsqueda de índice?

subToken = queryResults["F.SP"];