更新 問題が見つかりました -- 間違ったクラスから継承していたため、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 を使用するこれまでに見た例は、そのクラスのプロパティのみである型ではなく、シリアル化されるメイン クラスのシリアライザーを置き換える方法に対処しているようです。internal
コードで DbGeography を定義しておらず、コンストラクターがなく、ファクトリ メソッドによってのみインスタンス化できるため、実質的にシール クラスであるため、オーバーライドされているクラスに注釈を付けることを含む例は機能しません。
JsonConverter を型に流暢に適用する方法はありますか? もしそうなら、コンバーターはどのように見えますか? WriteJson() メソッドをオーバーライドするだけですか?