8

次のような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")

問題なし

4

4 に答える 4

5

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

于 2016-06-29T10:44:39.657 に答える
1

SelectToken を使用する代わりに、インデックス検索はどうですか?

subToken = queryResults["F.SP"];
于 2013-11-13T02:05:18.100 に答える
0
JObject obj = JObject.Parse(jsonstring);
var fsp = obj["queries"].First().First();

最もエレガントではありませんが、価値があります。

于 2012-04-28T12:15:29.657 に答える