JSON.NET JObject键比较不区分大小写

时间:2012-08-21 13:18:51

标签: c# json json.net

我使用Newtonsoft Json.net来解析JSON字符串。我将字符串转换为JObject。当通过键访问元素的值时,我希望比较是不区分大小写的。在下面的代码中,我使用" FROM"作为关键。我希望它返回字符串" 1"在线json [" FROM"]。ToString()。但它失败了。是否可以使下面的代码有效?

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

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

2 个答案:

答案 0 :(得分:86)

这应该有效:

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

答案 1 :(得分:8)

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();