2011-11-03 40 views
3

.NET Json序列化程序將Double.PositiveInfinity等序列化爲Infinity(無效的JSON)之類的東西。我現在試圖使用Json.NET將對象序列化爲JSON,但是我想將它包裝起來,以便像Infinity這樣的值轉換爲NULL或字符串「Infinity」。我如何去做這件事?如何在.NET中生成的JSON中處理Infinity

回答

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; 
    } 
} 
+0

我發現這樣做的另一種方式很容易做到的,但因爲我是新的,我不能發佈回答。基本上你可以繼承'JsonConverter',並將它添加到'JsonSerializerSettings'中的'Converters'中。 – Phil

+0

@ user1016172沒有意識到你可以做到這一點。這似乎是一個有趣的方法。 – JaredPar