![]() |
Delphi-Version: 12 Athens
REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Hallo,
wenn ich ein Objekt mit REST.Json.TJson.ObjectToJsonString in ein JSON schreibe dann schreibt mir die Methode immer noch die Optionen des JSONStreamers mit ins JSON. Das sieht dann so aus: { "clientSettings":{ "client":[ { "clientid":"0", "Options":[ "joIgnoreEmptyStrings", "joIgnoreEmptyArrays", "joDateIsUTC", "joDateFormatISO8601", "joIndentCasePreserve" ] }, Kann man das irgendwie abschalten? Grüße Stefan |
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Das heißt, du hast eine Property Options, die nicht mitgeschrieben werden soll? Das sollte mit dem Attribut
Delphi-Quellcode:
gehen.
[JSONMarshalled(False)]
|
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Sicher? Kannst du das an einem Beispiel nachstellen?
Delphi-Quellcode:
program Project1;
uses Rest.Json; type TMyObject = class someField: Byte; someText: String; end; begin var myObj := TMyObject.Create(); myObj.someField := 42; myObj.someText := 'Hallo Welt'; const asJson = Rest.Json.TJson.ObjectToJsonString(myObj); Assert(asJson = '{"someField":42,"someText":"Hallo Welt"}'); end. |
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Die Methode ObjectToJsonString hat einen Parameter Options. Da kann so Zeug wie Datumsformat usw. spezifiziert werden.
Diese Options, welche NICHTS mit dem zu schreibenden Objekt zu tun haben, schreibt der Marshaller aber mit in das JSON. Das möchte ich aber nicht. @Schöner Günther: Du mußt den Parameter Options mit spezifizieren, dann hast Du diese auch im JSON. class function ObjectToJsonString(AObject: TObject; AOptions: TJsonOptions = [joDateIsUTC, joDateFormatISO8601, joBytesFormatArray, joIndentCaseCamel]): string; Ich erstelle nachher mal ein Beispiel. |
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Das hatte ich auch ausprobiert, aber das ist bei mir nicht passiert, egal ob ich wenige oder sogar alle möglichen Werte übergeben habe. Ein Beispiel wäre daher wichtig.
|
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Hallo jaenike,
tatsächlich hatte ich in der Klasse ein privates Attribut FOptions. Das hatte ich völlig übersehen. [JSONMarshalledAttribute(False)] FOptions: TJsonOptions; Das hat das Problem gelöst. Danke für die Hilfe. Stefan |
AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben
Nur so am Rande: Obwohl die Klasse
Delphi-Quellcode:
heißt, kann dieser Name bei der Verwendung als Attribut auf [JSONMarshalled(False)] gekürzt werden. Das erhöht die Lesbarkeit und verringert die Schreibarbeit. Die Programmierhilfe zeigt das übrigens auch genauso an.
JSONMarshalledAttribute
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz