更新:找到了问题 -- 继承错误的类,需要继承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()方法吗?
writer.WriteRawValue
。 - drzaus