我正在使用Newtonsoft Json.net来解析Json字符串。我将字符串转换为JObject。当通过键访问元素的值时,我希望比较是不区分大小写的。在下面的代码中,我使用"FROM"作为关键字。我希望它在json["FROM"]行返回字符串"1"。ToString()。但它失败了。有可能使下面的代码工作吗?
String ptString = "{from: 1, to: 3}";
var json = (JObject)JsonConvert.DeserializeObject(ptString);
String f = json["FROM"].ToString();
这应该有效:
var json = @"{UPPER: 'value'}";
var jObj = JObject.Parse(json);
var upper = jObj.GetValue("upper", StringComparison.OrdinalIgnoreCase)?.Value<string>();
Console.WriteLine(upper); // value
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();