AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

Ein Thema von swestner · begonnen am 13. Aug 2025 · letzter Beitrag vom 14. Aug 2025
Antwort Antwort
swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
91 Beiträge
 
Delphi 12 Athens
 
#1

REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt 13. Aug 2025, 08:33
Delphi-Version: 12 Athens
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
Stefan Westner
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.070 Beiträge
 
Delphi 12 Athens
 
#2

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt 13. Aug 2025, 09:06
Das heißt, du hast eine Property Options, die nicht mitgeschrieben werden soll? Das sollte mit dem Attribut [JSONMarshalled(False)] gehen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt 13. Aug 2025, 09:17
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.
  Mit Zitat antworten Zitat
swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
91 Beiträge
 
Delphi 12 Athens
 
#4

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt 13. Aug 2025, 09:18
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.
Stefan Westner

Geändert von swestner (13. Aug 2025 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.070 Beiträge
 
Delphi 12 Athens
 
#5

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt 13. Aug 2025, 10:22
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
91 Beiträge
 
Delphi 12 Athens
 
#6

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt Gestern, 21:05
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
Stefan Westner
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.780 Beiträge
 
Delphi 12 Athens
 
#7

AW: REST.Json.TJson.ObjectToJsonString - Options nicht in JSON schreiben

  Alt Gestern, 23:26
Nur so am Rande: Obwohl die Klasse JSONMarshalledAttribute 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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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