我正在使用JSON.Net序列化一组数据,以便理论上可以在项目外部进行处理。结构如下:
区域
-名称
-位置
-POI []
兴趣点
-名称
-位置
城镇:POI
-人口
等
我最初使用JSON.Net序列化了数据,只需调用JsonConvert.Serialise(myZoneArray)
。
这工作,并给了我适当的json字符串,我将其复制到文件中。
然后我反序列化了它,也成功了。但是,当我在任意一个POI上调用return this.GetType()
时,它们都将返回基本POI类。因此,我认为我在序列化和反序列化时会丢失对象继承。
是否有解决方案?
答案 0 :(得分:1)
您可以通过为写入和读取步骤都传递一个JsonSerializerSettings
值来tell Json.Net to write and read Type Information:
static JsonSerializerSettings withTypes= new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
};
var serialized = JsonConvert.SerializeObject(myZoneArray, withTypes);
Console.WriteLine(serialized);
var result= JsonConvert.DeserializeObject<Zone[]>(serialized,withTypes);