json.net SelectToken带有嵌入的“标记”&引用;

json.net SelectToken带有嵌入的“标记”&引用;,json.net,Json.net,我的json看起来像: myjson = {"queries":{"F.SP": 27}} 所以 queryResults = JObject.Parse(jsonString) 我能行 firstToken = queryResults.SelectToken("queries") 拿回LinqJToken {"F.SP": 27} 但是我被卡住了,因为当我尝试 subToken = firstToken.SelectToken("F.SP") 我什么也得不到。我猜这是因为JSON

我的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正在寻找一个带有subtoken“SP”的标记“F”

我也试过以下每一种方法,但都没有效果

myToken = queryResults.SelectToken("queries.F.SP")     
myToken = queryResults.SelectToken("queries[0].F.SP")     
(queryResults.SelectToken(“查询[0]”)不返回任何内容,fwiw)

有什么想法吗

编辑:我已经验证了嵌入的“.”是问题所在;如果我将原始json更改为

{"queries":{"FSP": 27}}
我能行

queryResults.SelectToken("queries").SelectToken("FSP")
没问题

JObject obj = JObject.Parse(jsonstring);
var fsp = obj["queries"].First().First();

虽然不是最优雅的,但它会得到值。

这不会返回令牌本身,但会返回值(这可能是您正在寻找的)

queryResults.SelectToken(“查询”).Value(“F.SP”);

与其尝试使用SelectToken,不如进行索引搜索

subToken = queryResults["F.SP"];

如果在JSON字段中有这样的名称:

{"queries":{"F.SP": 27}}
您可以使用SelectToken转义:

queryResults.SelectToken("queries").SelectToken("['F.SP']")

下面是有关转义的更多示例:

queryResults.SelectToken("queries").SelectToken("['F.SP']")
queryResults.SelectToken("queries.['F.SP']")