考虑以下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
}
注意尾随零?我该如何摆脱它?
修改
我怀疑答案是编写自己的转换器。如果是的话,那很好,我想我会接受这个答案。我只是想知道是否存在一个我不知道的属性,它允许您指定输出格式(或类似)。
答案 0 :(得分:4)
这似乎是图书馆的硬编码行为:
https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/JsonConvert.cs#L300
如果要更改行为,则需要编辑库并从源代码重新编译(或选择其他JSON库)