Benutzerdefinierter Serializer für nur eine Eigenschaft in Json.NET

AKTUALISIEREN Fand das Problem - wurde von falscher Klasse geerbt, musste JsonConverter sein.

Ich habe eine Klasse, die eine Location-Eigenschaft vom Typ System.Data.Entity.Spatial.DbGeography hat. Der standardmäßige Json.NET-Serializer gibt JSON-Text wie folgt aus:

  ...
  "PlaceType": 0,
  "Location": {
    "Geography": {
      "CoordinateSystemId": 4326,
      "WellKnownText": "POINT (-88.00000 44.00000)"
    }
  },
  "AddedDT": null,
  ...

Ich möchte, dass der Text so ausgegeben wird:

  ...
  "PlaceType": 0,
  "Location": [-88.00000,44.00000],
  "AddedDT": null,
  ...

... so scheint es mir, was ich tun sollte, wäre zu überschreiben, was Konverter derzeit auf dem Typ DbGeography verwendet wird.

Die Beispiele, die ich bisher gesehen habe, die CustomCreationConverters und ContractResolvers verwenden, scheinen zu beschreiben, wie Sie den Serializer für die zu serialisierende Hauptklasse ersetzen würden, nicht für einen Typ, der nur eine Eigenschaft dieser Klasse ist. Die Beispiele, in denen die überschriebene Klasse mit Anmerkungen versehen wird, funktionieren bei mir nicht, da ich DbGeography in meinem Code nicht definiere und es sich praktisch um eine versiegelte Klasse handelt, da sie keinen Konstruktor hat und nur von instanziiert werden kanninternal fabrik methoden.

Gibt es eine Möglichkeit, einen JsonConverter flüssig auf einen Typ anzuwenden? Wenn ja, wie würde der Konverter aussehen? Überschreibe ich nur die WriteJson () -Methode?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage