3
.NET Json序列化程序将Double.PositiveInfinity等序列化为Infinity(无效的JSON)之类的东西。我现在试图使用Json.NET将对象序列化为JSON,但是我想将它包装起来,以便像Infinity这样的值转换为NULL或字符串“Infinity”。我如何去做这件事?如何在.NET中生成的JSON中处理Infinity
.NET Json序列化程序将Double.PositiveInfinity等序列化为Infinity(无效的JSON)之类的东西。我现在试图使用Json.NET将对象序列化为JSON,但是我想将它包装起来,以便像Infinity这样的值转换为NULL或字符串“Infinity”。我如何去做这件事?如何在.NET中生成的JSON中处理Infinity
要做到这一点的唯一方法是将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;
}
}
我发现这样做的另一种方式很容易做到的,但因为我是新的,我不能发布回答。基本上你可以继承'JsonConverter',并将它添加到'JsonSerializerSettings'中的'Converters'中。 – Phil
@ user1016172没有意识到你可以做到这一点。这似乎是一个有趣的方法。 – JaredPar