我正在使用 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 中看不到任何明显的内容。谢谢!
最佳答案
您是否尝试过使用 ==
运算符?似乎没有“不必要的仪式”也能得到同样的结果。
var x2 = rg.First(pt => pt.x == "2");
关于c# - 一路反序列化成dynamic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247403/