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 に答える