json.net 带有嵌入式"."的选择令牌



我有如下所示的 json:

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

所以用

queryResults = JObject.Parse(jsonString)

我能做到

firstToken = queryResults.SelectToken("queries") 

并拿回林克JToken

{"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("query[0]") 不返回任何内容, fwiw)

有什么想法吗?

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

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

我能做到

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

没关系

如果 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

这不会返回令牌本身,但会返回值(这可能是您要查找的值)...

queryResults.SelectToken("queries").Value<int>("F.SP");

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

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

不是最优雅的,但它得到了价值。

相关内容

  • 没有找到相关文章

最新更新