【发布时间】:2023-03-18 02:40:01
【问题描述】:
鉴于这个类:
public class Foo
{
public double? Bar { get; set; }
}
要将 double.NaN 序列化为 null,它可以工作:
var foo = new Foo { Bar = double.NaN };
var test = JsonConvert.SerializeObject(foo, new JsonSerializerSettings { FloatFormatHandling = FloatFormatHandling.DefaultValue });
// {"Bar":null} // ok
但要将 NaN 反序列化为 null,它不起作用:
var test2 = JsonConvert.SerializeObject(foo);
// {"Bar":"NaN"}
var test3 = JsonConvert.DeserializeObject<Foo>(test2, new JsonSerializerSettings { FloatFormatHandling = FloatFormatHandling.DefaultValue });
// test3.Bar = NaN // Not OK, I want it to be null
有没有比创建自己的自定义转换器更简单的解决方案? https://stackoverflow.com/a/13801482/717058
【问题讨论】:
-
行为正确且合乎逻辑:NaN 的反序列化将产生 NaN。我认为 null 在 Json 中产生一个空字符串。使用自定义转换器!
-
反序列化后的test3.Bar是什么?