c# - 将 double 序列化为 JSON 时的小数精度为零

标签 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
}

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

编辑

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

最佳答案

这似乎是库的硬编码行为:

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/

相关文章:

c# - 读取值自动更新 UWA/UWP

c# - 如何在 C# 中将\symbol 添加到字符串的末尾

javascript - 使用lodash过滤json数组中具有多个键的多个值

c# - 找不到数据时是否返回一个空的通用列表?

c# - Emgu - CalcHist _rowRange 错误

C# 系统参数异常 : An item with the same key has already been added

ios - 用两个字符串过滤字典数组

java - 如何从 Jersey 资源生成 JSON?

c# - 将字符串转换为 C# 可执行代码

json - 使用newtonsoft,如何在不知道类型的情况下反序列化直到运行时?