2016-06-29 28 views
-1

In meiner Delphi 10.1 Berlin Datasnap REST-Anwendung muss ich die JSON-Serialisierung eines Objekts anpassen.Delphi Datasnap - So passen Sie JSON-Marshalling an

Ich möchte eine Lösung finden, die das JSONReflect-Attribut verwendet, und nicht die Erstellung von Konvertern und Reverter für jedes spezifische Feld, wie in this article von Daniele Teti beschrieben.

Insbesondere, ich versuche, ein Objekt zu serialisieren, die enthält:

  • eine binäre Datei, in JSON Darstellung zu konvertieren - wie ein Byte-Array
  • einige TDateTime Felder, in einem String zu konvertieren mit ISO-Format

ich habe ein technical PDF document von Marco Cantù gefunden, dass die Gespräche über JSONReflect Umwandlung von Feldern zu ermöglichen Attribut, aber ich kann keine Dokumentation darüber finden.

Jeder kann mir bitte helfen?

Antwort

1

Die Verwendung des JSONReflect-Attributs impliziert automatisch die Verwendung von Konvertern und Reversern. Delphi XE6 wird mit dem Beispielprojekt MarshallUnmarshall ausgeliefert, in dem die JSON-Serialisierung abgedeckt ist. RAD Studio Demo Code ist ebenfalls verfügbar online.

Wenn Sie ein Objekt mit einem TDateTime-Feld in einer Zeichenfolge mit ISO-Format serialisieren möchten, können Sie auch die in der Rest.Json-Einheit definierte Standard-Tjson-Klasse verwenden. Es enthält eine ObjectToJsonString Methode. Im Parameter AOptions können Sie angeben, dass Datumsangaben mit dem ISO-Standard formatiert werden.

class function ObjectToJsonString(AObject: TObject; AOptions: TJsonOptions = [joDateIsUTC, joDateFormatISO8601]): string; 

Um eine Binärdatei in JSON Daniele Teti zu serialisiert hat Beispielcode in seiner Delphi Cookbook. Leider kann ich den Beispielcode nicht teilen, denke ich. Literatur-Empfehlungen! Second edition ist gerade erschienen.