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();
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();
これはうまくいくはずです:
string json = @"{UPPER: 'value'}";
JObject o = JObject.Parse(json);
var value = o.GetValue("upper", StringComparison.OrdinalIgnoreCase)?.Value<string>();