我有json看起来像:
myjson = {"queries":{"F.SP": 27}}
Run Code Online (Sandbox Code Playgroud)
所以
queryResults = JObject.Parse(jsonString)
Run Code Online (Sandbox Code Playgroud)
我可以
firstToken = queryResults.SelectToken("queries")
Run Code Online (Sandbox Code Playgroud)
然后回到LinqJToken
{"F.SP": 27}
Run Code Online (Sandbox Code Playgroud)
但我被困住了,因为当我尝试的时候
subToken = firstToken.SelectToken("F.SP")
Run Code Online (Sandbox Code Playgroud)
我什么都没得到.我猜这是因为JSON.net正在寻找带有子词"SP"的令牌"F".
我也尝试过以下各项,但都无济于事
myToken = queryResults.SelectToken("queries.F.SP")
myToken = queryResults.SelectToken("queries[0].F.SP")
Run Code Online (Sandbox Code Playgroud)
(queryResults.SelectToken("queries [0]")什么都不返回,fwiw)
有任何想法吗?
编辑:我已经验证了嵌入式"." 是问题; 如果我将原来的json改为
{"queries":{"FSP": 27}}
Run Code Online (Sandbox Code Playgroud)
我可以
queryResults.SelectToken("queries").SelectToken("FSP")
Run Code Online (Sandbox Code Playgroud)
没问题
如果您在 JSON 字段中有这样的名称:
{"queries":{"F.SP": 27}}
Run Code Online (Sandbox Code Playgroud)
您可以使用 SelectToken 转义:
queryResults.SelectToken("queries").SelectToken("['F.SP']")
Run Code Online (Sandbox Code Playgroud)
或者
queryResults.SelectToken("queries.['F.SP']")
Run Code Online (Sandbox Code Playgroud)
以下是更多转义示例:http : //www.newtonsoft.com/json/help/html/QueryJsonSelectTokenEscaped.htm
这不会返回令牌本身,但会返回值(这可能就是您正在寻找的值)...
queryResults.SelectToken("queries").Value<int>("F.SP");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |