Рассмотрим следующий JSON объект:Десятичная точность при сериализации двойников в JSON
{
"value": 0
}
Теперь предположим, я картирование это тип .NET Foo
:
class Foo
{
public double Value { get; set; }
}
Тип Foo.Value
равен double
, так как Value
не всегда является интегралом er.
Использование Json.NET, это прекрасно работает:
Foo deserialized = JsonConvert.DeserializeObject<Foo>(json);
Однако, наблюдать, что происходит, когда я пытаюсь преобразовать объект обратно в JSON представления:
string serialized = JsonConvert.SerializeObject(deserialized, Formatting.Indented);
Выход:
{
"Value": 0.0
}
Обратите внимание на конечный ноль? Как я могу избавиться от него?
EDIT
Я подозреваю, что ответ будет написать свой собственный конвертер. Если да, тогда все в порядке, и я думаю, что я соглашусь с этим в ответ. Мне просто интересно, может быть, существует атрибут, о котором я не знаю, который позволяет указать выходной формат (или аналогичный).
Почему, чтобы избавиться от него? – elyashiv
Такая цифровая буквальная нотация ('DIGITS.DIGITS') обычно обозначает двойной тип для C-подобных языков программирования. На основе этих обозначений анализатор JSON мгновенно десериализует это значение с использованием правильного типа данных, избегая дополнительного шага трансляции/преобразования при установке значения в вашем объекте C#. – tiguchi
@elyashiv, потому что я стараюсь как можно ближе придерживаться первоначальной спецификации. Но независимо от того, кто-то не должен иметь значения. Я уверен, что для этого существуют реальные варианты использования. –