Как вы обрабатываете бесконечность в JSON, сгенерированном в .NET - PullRequest
3 голосов
/ 03 ноября 2011

Сериализатор .NET Json сериализует Double.PositiveInfinity и тому подобное для таких вещей, как Infinity, которые не являются допустимыми JSON. Сейчас я пытаюсь использовать Json.NET для сериализации объекта в JSON, но мне хотелось бы обернуть его так, чтобы значения, такие как Infinity, преобразовывались в NULL или в строку «Infinity». Как мне это сделать?

1 Ответ

0 голосов
/ 03 ноября 2011

Единственный способ сделать это - сериализовать значения Double как пользовательский тип, который предоставляет информацию поверх значения.Например,

{
  'isInfinity': 'true',
  'isNan': 'false'
  'value': '0' };

Это можно сделать довольно легко, используя тип оболочки для обработки Double значений

[DataContract]
public sealed class DoubleWrapper { 
  [DataMember]
  public bool isInfinity;

  [DataMember]
  public bool isNaN;

  [DataMember]
  public double value;

  public DoubleWrapper(double p) {
    isInfinity = Double.IsInfinity(p);
    isNaN = Double.IsNaN(p);
    value = p;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...