我有一些.NET
代码可以反序列JSON
化由webservice
运行动态语言创建的对象。因为源是动态的,它有时会以浮点格式序列化整数值(例如,2 被序列化为“2.0”)。
使用Json.NET 4.0.4
,这可以无缝地工作(似乎在反序列化时应用了舍入)。Json.NET 4.5
但是,随着升级到FormatException
. 这是代码:
// works as expected in both versions
var s = "2";
Console.WriteLine(JsonConvert.DeserializeObject<int>(s));
// throws FormatException in 4.5 only
var s = "2.0";
Console.WriteLine(JsonConvert.DeserializeObject<int>(s));
// throws FormatException in 4.5, rounds to 3 in 4.0.4
var s = "2.6";
Console.WriteLine(JsonConvert.DeserializeObject<int>(s));
有什么简单的方法可以恢复原始行为吗?理想的行为是只反序列化具有整数值的数字,但可以采用任何格式(例如 2.0、1e10,但不是 2.5),但我会满足于 4.0.4 的行为。