45

NewtonsoftJson.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();
4

2 に答える 2

130

これは機能するはずです:

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

Console.WriteLine(upper); // value
于 2013-12-09T16:26:55.983 に答える
14

c#では、大文字と小文字を区別しないキーで辞書を使用できるため、私が使用した回避策は、次のようにJObjectをStringComparer.CurrentCultureIgnoreCaseset付きの辞書に変換することです。

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();
于 2013-06-26T22:57:54.377 に答える