recorrer - json.net SelectToken con "." incrustado
recorrer json c# (4)
Tengo json que se ve así:
myjson = {"queries":{"F.SP": 27}}
entonces con
queryResults = JObject.Parse(jsonString)
puedo hacer
firstToken = queryResults.SelectToken("queries")
y recupera el LinqJToken
{"F.SP": 27}
pero estoy 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 probé cada uno de los siguientes, sin éxito
myToken = queryResults.SelectToken("queries.F.SP")
myToken = queryResults.SelectToken("queries[0].F.SP")
(queryResults.SelectToken ("consultas [0]") no devuelve nada, fwiw)
¿Algunas ideas?
EDITAR: he verificado que el "." Incrustado. es el problema; si cambio el json original a
{"queries":{"FSP": 27}}
puedo hacer
queryResults.SelectToken("queries").SelectToken("FSP")
No hay problema
Esto no devolverá el token en sí, pero devolverá el valor (que probablemente sea lo que está buscando de todos modos) ...
queryResults.SelectToken("queries").Value<int>("F.SP");
JObject obj = JObject.Parse(jsonstring);
var fsp = obj["queries"].First().First();
No es el más elegante pero tiene el valor.
En lugar de tratar de usar SelectToken, ¿qué tal una búsqueda de índice?
subToken = queryResults["F.SP"];
Si tiene tales nombres en los campos JSON:
{"queries":{"F.SP": 27}}
Puede usar SelectToken escaping:
queryResults.SelectToken("queries").SelectToken("[''F.SP'']")
o
queryResults.SelectToken("queries.[''F.SP'']")
Aquí hay más ejemplos con escapes: http://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenEscaped.htm