4

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

4

1 回答 1

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;
  }
}
于 2011-11-03T15:50:46.530 回答