使用JSON.Net保留继承的类类型

时间:2019-12-04 23:06:17

标签: c# json json.net

我正在使用JSON.Net序列化一组数据,以便理论上可以在项目外部进行处理。结构如下:

区域
-名称
-位置
-POI []

兴趣点
-名称
-位置

城镇:POI
-人口

我最初使用JSON.Net序列化了数据,只需调用JsonConvert.Serialise(myZoneArray)。 这工作,并给了我适当的json字符串,我将其复制到文件中。

然后我反序列化了它,也成功了。但是,当我在任意一个POI上调用return this.GetType()时,它们都将返回基本POI类。因此,我认为我在序列化和反序列化时会丢失对象继承。

是否有解决方案?

1 个答案:

答案 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);