C# Newtonsoft JSON拒绝反序列化XNA矩形
我很困惑。我试图通过Newtonsoft.JSON序列化保存游戏的当前状态。到目前为止一切都很好,它工作得很好,我得到了一个字符串,其中包含了json格式的所有我需要的信息。但当我试图反序列化它时,麻烦来了:C# Newtonsoft JSON拒绝反序列化XNA矩形,c#,json,serialization,xna,json.net,C#,Json,Serialization,Xna,Json.net,我很困惑。我试图通过Newtonsoft.JSON序列化保存游戏的当前状态。到目前为止一切都很好,它工作得很好,我得到了一个字符串,其中包含了json格式的所有我需要的信息。但当我试图反序列化它时,麻烦来了: An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll Additional information: Error conver
An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll
Additional information: Error converting value "{X:-32 Y:-32 Width:64 Height:64}" to type 'Microsoft.Xna.Framework.Rectangle'. Path 'GameElements[0].Hitbox', line 5, position 51.
当我点击details时,它说“无法从System.String转换为Microsoft.XNA.Framework.Rectangle。但这不正是json反序列化程序的工作吗?”
提前谢谢,希望你知道是什么原因造成的
PS:反序列化代码:
JsonConvert.DeserializeObject<GameState>(
GameSettings.Default.SaveStates[name],
new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Auto
});
JsonConvert.DeserializeObject(
GameSettings.Default.SaveState[名称],
新的JsonSerializerSettings()
{
TypeNameHandling=TypeNameHandling.Auto
});
编辑:感谢所有的帮助,但事实证明我只是一个derp…我序列化的矩形是一个没有setter的属性。但我还想证明json.net对这种错误没有任何有意义的帮助
Edit2:非常有趣的是,XNA矩形即使有setter(重复注释)也无法序列化。这不是有效的JSON-
name:value
对之间应该有逗号(,
),即{X:-32,Y:-32,…}
,看起来像ToString()
format。矩形是否实际序列化为JSON?我使用Newtonsoft.JSON.JsonConvert.SerializeObject(object)创建了此JSON。它应该是有效的,还是我完全误解了什么?@PMaker向我们展示了用于序列化矩形的代码。可能的重复项