更新 发现问题——从错误的类继承,需要是 JsonConverter。
我有一个具有 System.Data.Entity.Spatial.DbGeography 类型的 Location 属性的类。默认的 Json.NET 序列化器输出 JSON 文本,如下所示:
...
"PlaceType": 0,
"Location": {
"Geography": {
"CoordinateSystemId": 4326,
"WellKnownText": "POINT (-88.00000 44.00000)"
}
},
"AddedDT": null,
...
我希望它发出这样的文字:
...
"PlaceType": 0,
"Location": [-88.00000,44.00000],
"AddedDT": null,
...
...所以在我看来,我应该做的是覆盖当前在 DbGeography 类型上使用的任何转换器。
到目前为止,我看到的使用 CustomCreationConverters 和 ContractResolvers 的示例似乎解决了如何为正在序列化的主类替换序列化程序,而不是为仅是该类的属性的类型。涉及注释被覆盖的类的示例对我不起作用,因为我没有在我的代码中定义 DbGeography 并且它实际上是一个密封类,因为它没有构造函数并且只能由internal
工厂方法实例化。
有没有办法将 JsonConverter 流利地应用于类型?如果是这样,转换器会是什么样子?我只是覆盖 WriteJson() 方法吗?