JSON.NET忽略了没有JsonProperty属性的所有属性

时间:2014-11-16 09:21:57

标签: c# json serialization json.net

我有一个GameBoard类,它有两种保存和加载方法:

    public void Save(string pFilePath)
    {
        var s = JsonConvert.SerializeObject(this);
        System.IO.File.WriteAllText(pFilePath, s);
    }

    public static GameBoard Load(string pFilePath)
    {
        var s = System.IO.File.ReadAllText(pFilePath);
        return JsonConvert.DeserializeObject<GameBoard>(s);
    }

这些是GameBoard类的属性:

    #region Fields

    public int Width { get; protected set; }

    public int Height { get; protected set; }

    public GameBoardCell[,] Cells { get; protected set; }

    public bool WallSurrounded { get; set; }

    #endregion

Save方法效果很好,这就是内容:

  

{&#34;宽度&#34;:3,&#34;身高&#34;:3,&#34;细胞&#34;:[[{&#34;内容&#34;:0,& #34;球&#34; {&#34; ColorID&#34;:0,&#34; ID&#34;:&#34; 4481e52d-76fc-4335-805b-c47e36e3d57d&#34;}&#34 ;目标&#34;:空},{&#34;内容&#34;:1,&#34;球&#34;:空,&#34;目标&#34;:空},{&#34;内容& #34;:0,&#34;球&#34;:空,&#34;目标&#34;:空}],[{&#34;内容&#34;:0,&#34;球&#34 ;:空,&#34;目标&#34;:空},{&#34;内容&#34;:0,&#34;球&#34;:空,&#34;目标&#34;:空} ,{&#34;内容&#34;:0,&#34;球&#34;:空,&#34;目标&#34;:空}],[{&#34;内容&#34;:0, &#34;球&#34;:空,&#34;目标&#34;:空},{&#34;内容&#34;:1,&#34;球&#34;:空,&#34;目标&#34;:空},{&#34;内容&#34;:0,&#34;球&#34;:空,&#34;目标&#34; {&#34; ColorID&#34 ;: 0,&#34; ID&#34;:&#34; aaf6f4ae-0a1a-4c3d-9608-f13ae9c4bba7&#34;}}]]&#34; WallSurrounded&#34;:真}

但是,当我对同一个文件使用Load方法时,我的所有属性都是null或默认值(0表示整数)。

我必须在我的每个属性中添加[JsonProperty]才能使其正常工作。我之前使用过Json.NET,我记得我没有添加任何属性。这个意图是从Json.NET改变的(我刚刚从Nuget获得这个新项目的6.0.6),或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

JSON.NET忽略privateprotectedinternal属性设置器。将属性转换为public,或使用属性装饰它们。

https://json.codeplex.com/discussions/222774