我正在使用json.net并喜欢它。但是,当我反序列化为动态时,我不会在底部获得字符串,整数等,我得到JValue对象,例如。
string json = "[{'x':'1', 'y':'1'}, {'x': '2', 'y': '2'}]";
dynamic[] rg = JsonConvert.DeserializeObject<dynamic[]>(json);
//var x2 = rg.First(pt => pt.x.Equals("2"));// JValue has no Equals method
var x2 = rg.First(pt => pt.x.ToString().Equals("2")); // have to convert to string
Console.WriteLine(x2);
如果x作为转换的一部分转换为.NET字符串,那么我将使用Equals方法。相反,我必须在底层的JValue上调用ToString来获取Equals方法。有没有办法配置json.net JsonConvert一直向下转换而不是使用JValue对象?我在JsonSerializerSettings中看不到任何明显的东西。谢谢!
答案 0 :(得分:0)
您是否尝试使用==
运算符?没有&#34;不必要的仪式,它似乎会给出相同的结果。
var x2 = rg.First(pt => pt.x == "2");