我的json看起来像:
myjson = {"queries":{"F.SP": 27}}
所以
queryResults = JObject.Parse(jsonString)
我能做到
firstToken = queryResults.SelectToken("queries")
并取回LinqJToken
{"F.SP": 27}
但是我被卡住了,因为当我尝试
时subToken = firstToken.SelectToken("F.SP")
我什么都没有。我猜这是因为JSON.net正在寻找带有子词“SP”的令牌“F”。
我也尝试过以下各项,但无济于事
myToken = queryResults.SelectToken("queries.F.SP")
myToken = queryResults.SelectToken("queries[0].F.SP")
(queryResults.SelectToken(“queries [0]”)什么都不返回,fwiw)
有什么想法吗?
编辑:我已经验证了嵌入式“。”是问题;如果我将原来的json改为{"queries":{"FSP": 27}}
我能做到
queryResults.SelectToken("queries").SelectToken("FSP")
没问题
答案 0 :(得分:3)
这不会返回令牌本身,但会返回值(这可能是你正在寻找的东西)......
queryResults.SelectToken("queries").Value<int>("F.SP");
答案 1 :(得分:3)
如果您在JSON字段中有这样的名称:
{"queries":{"F.SP": 27}}
您可以使用SelectToken转义:
queryResults.SelectToken("queries").SelectToken("['F.SP']")
或
queryResults.SelectToken("queries.['F.SP']")
以下是有关转义的更多示例:http://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenEscaped.htm
答案 2 :(得分:1)
而不是尝试使用SelectToken,索引搜索怎么样?
subToken = queryResults["F.SP"];
答案 3 :(得分:0)
JObject obj = JObject.Parse(jsonstring);
var fsp = obj["queries"].First().First();
不是最优雅但却有价值。