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,我会在反序列化期间在 FruitCount 属性中收到错误,因为 FruitList 为空。

我希望 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 回答