序列化时的十进制精度加倍为JSON

时间:2014-01-18 17:14:12

标签: c# json json.net

考虑以下JSON对象:

{
    "value": 0   
}

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

class Foo
{
    public double Value { get; set; }
}

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

使用JSON.NET,这非常有效:

Foo deserialized = JsonConvert.DeserializeObject<Foo>(json);

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

string serialized = JsonConvert.SerializeObject(deserialized, Formatting.Indented);

输出:

{
  "Value": 0.0
}

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

修改

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

1 个答案:

答案 0 :(得分:4)

这似乎是图书馆的硬编码行为:

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

如果要更改行为,则需要编辑库并从源代码重新编译(或选择其他JSON库)