3

重複の可能性:
Json.netの使用-ac#オブジェクトの部分的なカスタムシリアル化

asp.net MVC 4 WebAPIを使用すると、json.netで正常にシリアル化できるクラスがあります。クラスには、文字列のリストであるプロパティがあります。

public class FruitBasket {
    [DataMember]
    public List<string> FruitList { get; set; }

    public int FruitCount {
        get {
            return FruitList.Count();
        }
    }
}

Getメソッドでは、シリアル化は正常に行われ、JSONのFruitListプロパティの空の配列(つまり[])を取得します。PUTリクエストの本文で同じjsonを使用すると、FruitListがnullであるため、逆シリアル化中にFruitCountプロパティでエラーが発生します。

FruitListプロパティ(基本的にはget onlyプロパティ)をシリアル化するが、逆シリアル化しないようにしたい。json.netの設定またはその他の方法で可能ですか?

4

1 に答える 1

0

これはあなたの質問には答えていませんが、生成されたエラーに対処しているため、カスタムのシリアル化について心配する必要はありません。

FruitList にプライベート変数を使用し、get および set でそれを返します。値が null の場合は、プライベート変数を新しいリストに等しく設定します。

public class FruitBasket
{
    private List<string> _fruitList;

    [DataMember]
    public List<string> FruitList
    {
        get
        {
            return _fruitList;
        }
        set
        {
            if (value == null)
            {
                _fruitList = new List<string>();
            }
            else
            {
                _fruitList = value;
            }
        }
    }

    public int FruitCount
    {
        get
        {
            return FruitList.Count();
        }
    }
} 
于 2012-10-23T20:55:09.203 に答える