考虑以下 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
}
注意到尾随零了吗?我该如何摆脱它?
编辑
我怀疑答案是编写您自己的转换器。如果是,那很好,我想我会接受它作为答案。我只是想知道是否可能存在一个我不知道的属性可以让您指定输出格式(或类似格式)。
最佳答案
这似乎是库的硬编码行为:
https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/JsonConvert.cs#L300
如果您想改变行为,您需要编辑库并从源代码重新编译(或选择另一个 JSON 库)
关于c# - 将 double 序列化为 JSON 时的小数精度为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207259/