json.net SelectToken带有嵌入的“标记”&引用;
我的json看起来像: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
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']")