序列化为JSON时的小数精度为零

Ste*_*ens 5 c# json json.net

考虑以下JSON对象:

{
    "value": 0   
}
Run Code Online (Sandbox Code Playgroud)

现在假设我将其映射到.NET类型Foo

class Foo
{
    public double Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

的类型Foo.Valuedouble,因为Value它并不总是整数值。

使用JSON.NET,效果很好:

Foo deserialized = JsonConvert.DeserializeObject<Foo>(json);
Run Code Online (Sandbox Code Playgroud)

但是,观察当我尝试将对象转换回其JSON表示形式时会发生什么:

string serialized = JsonConvert.SerializeObject(deserialized, Formatting.Indented);
Run Code Online (Sandbox Code Playgroud)

输出:

{
  "Value": 0.0
}
Run Code Online (Sandbox Code Playgroud)

注意尾随零吗?我如何摆脱它?

编辑

我怀疑答案将是编写您自己的转换器。如果是这样,那很好,我想我会接受作为答案。我只是想知道是否存在一个我不知道的属性,可以让您指定输出格式(或类似格式)。

Jac*_*ack 6

看来这是库的硬编码行为:

https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/JsonConvert.cs#L300

如果你想改变行为,你需要编辑库并从源代码重新编译(或选择另一个 JSON 库)