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