我有一個GameBoard
類,它有2種方法進行保存和加載:JSON.NET忽略我的所有屬性,而屬性JsonProperty
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
方法工作的很好,這是內容:
{「Width」:3,「Hei GHT 「:3,」 單元 「:[[{」 內容 「:0,」 球 「:{」 ColorID 「:0,」 ID 「:」 4481e52d-76fc-4335-805b-c47e36e3d57d 「},」 目標「:空},{ 「內容」:1, 「球」:空, 「目標」:空},{ 「內容」:0, 「球」:空, 「目標」:空}],[{ 「內容」: 0, 「球」:空, 「目標」:空},{ 「內容」:0, 「球」:空, 「目標」:空},{ 「內容」:0, 「球」:空,「目標「日期null}],[{」 內容 「:0,」 球 「:空,」 目標 「:空},{」 內容 「:1,」 球 「:空,」 目標 「:空},{」 內容「:0,」Ball「:null,」Target「:{」ColorID「:0,」ID「:」aaf6f4ae-0a1a-4c3d-9608-f13ae9c4bba7「}}]],」WallSurrounded「:true}
但是,當我使用Load
方法使用相同的文件時,我所有的屬性都是null
或默認值(0表示整數)。
我必須將[JsonProperty]
添加到我的每個屬性才能正常工作。我之前使用過Json.NET,我記得我沒有添加任何屬性。這是從Json.NET的意圖改變(我剛從Nuget 6.0.6獲得這個新項目),還是我做錯了什麼?
,你可以分享你的'BoardGame'類的相關部分,請 – user3473830
您正在使用一成不變的類或不可改變的集合?你有沒有在任何地方設置過[JsonObject(MemberSerialization.OptIn)]? – dbc
您寫道:「保存方法效果很好,這是內容」。但是你發佈的json中顯示的所有'Cell'屬性都有默認值。那麼,「保存」工作是否正確? – dbc