如何在.NET中生成的JSON中处理Infinity

时间:2011-11-03 15:37:58

标签: .net json infinity

.NET Json序列化程序将Double.PositiveInfinity等序列化为Infinity之类的东西,它们是无效的JSON。我现在正在尝试使用Json.NET将对象序列化为JSON,但是我想将它包装起来以便像Infinity这样的值转换为NULL或字符串“Infinity”。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

执行此操作的唯一方法是将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;
  }
}