2012-04-25 12 views
5

Mam json, który wygląda tak:json.net SelectToken z osadzonym "."

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

Więc z

queryResults = JObject.Parse(jsonString) 

mogę zrobić

firstToken = queryResults.SelectToken("queries") 

i odzyskać LinqJToken

{"F.SP": 27} 

ale jestem następnie utknąłem, ponieważ gdy próbowałem, otrzymałem Nothing, gdy próbowałem

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

. Zgaduję, że to dlatego, że JSON.net szuka tokenu "F" z subtokenem "SP".

Próbowałem zostały również każdy z następujących bezskutecznie

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

(queryResults.SelectToken ("Zapytania [0]") zwraca nic, FWIW)

Jakieś pomysły?

EDYCJA: Potwierdziłem, że osadzony "." to jest problem; czy zmienić oryginalną json do

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

mogę zrobić

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

żadnego problemu

Odpowiedz

3

nie wróci sam znak, lecz zwróci wartość (co jest prawdopodobnie to, czego szukasz w każdym razie) ...

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

Nie najbardziej eleganckie, ale robi się wartość.

1

Zamiast próbować używać SelectToken, jak o wyszukiwanie indeksów?

subToken = queryResults["F.SP"];