web-dev-qa-db-ja.com

JSON.NET JObjectキー比較で大文字と小文字を区別しない

Newtonsoft Json.netを使用してJSON文字列を解析しています。文字列をJObjectに変換します。キーで要素の値にアクセスするとき、比較では大文字と小文字が区別されません。以下のコードでは、「FROM」をキーとして使用しています。 json ["FROM"]。ToString()の行で文字列 "1"を返します。しかし、それは失敗します。以下のコードを機能させることは可能ですか?

String ptString = "{from: 1, to: 3}";
var json = (JObject)JsonConvert.DeserializeObject(ptString);

String f = json["FROM"].ToString();
35
Jeffrey

c#を使用すると、大文字と小文字を区別しないキーを持つ辞書を使用できます。そのため、私が使用した回避策は、JObjectをStringComparer.CurrentCultureIgnoreCaseが設定された辞書に変換することです。

JObject json = (JObject)JsonConvert.DeserializeObject(ptString);
Dictionary<string, object> d = new Dictionary<string, object>(json.ToObject<IDictionary<string, object>>(), StringComparer.CurrentCultureIgnoreCase);

String f = d["FROM"].ToString();
10
ForeverWintr

これはうまくいくはずです:

string json = @"{UPPER: 'value'}";
JObject o = JObject.Parse(json);
var value = o.GetValue("upper", StringComparison.OrdinalIgnoreCase)?.Value<string>();
99