一路反序列化为动态?

时间:2014-01-21 01:20:02

标签: c# json.net

我正在使用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中看不到任何明显的东西。谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试使用==运算符?没有&#34;不必要的仪式,它似乎会给出相同的结果。

var x2 = rg.First(pt => pt.x == "2");