AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Wie kann man Klassen-Felder in eine Json-Datei speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man Klassen-Felder in eine Json-Datei speichern

Ein Thema von juergen · begonnen am 24. Dez 2022 · letzter Beitrag vom 28. Dez 2022
Antwort Antwort
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
672 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wie kann man Klassen-Felder in eine Json-Datei speichern

  Alt 28. Dez 2022, 11:33
Wenn du schon mit TJSONObject.ParseJSONValue arbeitest und deine Konfig-Klasse relativ einfach aufgebaut ist, dann nimm doch für das Gegenteil auch die mitgelieferte Funktion:
  TFile.WriteAllText(TJson.ObjectToJsonString(my_jsonObj)); Klar, ist nicht so mächtig wie die Zusatzbibliotheken, die hier genannt wurden. Aber wenn das Lesen mit den Funktionen der RTL funktioniert, dann sollte es eigentlich auch fürs Schreiben reichen. Bei meinen einfachen Objekten funktioniert das so problemlos.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie kann man Klassen-Felder in eine Json-Datei speichern

  Alt 28. Dez 2022, 13:23
@Bbommel,

danke für den Hinweis , ich hatte das auch schon gesehen. HAbe mich momentan (vorläufig) auf TJsonTextWriter und TStringWriter festgelegt. Auch kann man sich so leicht eine mehrschichtige Struktur der Json-Datei aufbauen und die Datei lässt sich direkt formatieren, wenn gewünscht.
Delphi-Quellcode:
...
VAR
  Writer: TJsonTextWriter;
  StringWriter: TStringWriter;
BEGIN
  StringWriter := TStringWriter.Create( );
  Writer := TJsonTextWriter.Create( StringWriter );
  Writer.Formatting := TJsonFormatting.Indented;
  
  Try
    Writer.WriteStartObject;
    Writer.WritePropertyName( 'Database' );
    Writer.WriteStartObject;
    Writer.WritePropertyName( 'ServerName' );
    Writer.WriteValue( JsonDatabaseParam.ServerName );
    Writer.WritePropertyName( 'DBAdminUser' );
    Writer.WriteValue( JsonDatabaseParam.DBAdminUser );
    Writer.WritePropertyName( 'DatenbankName' );
    Writer.WriteValue( JsonDatabaseParam.DatenbankName );
    Writer.WritePropertyName( 'Password' );
    Writer.WriteValue( JsonDatabaseParam.Password );
    Writer.WritePropertyName( 'DatenbankProvider' );
    Writer.WriteValue( JsonDatabaseParam.DatenbankProvider );

    Writer.WriteEndObject;

    Writer.WritePropertyName( 'System' );
    Writer.WriteStartObject;
...
    Writer.WriteEndObject;
    Writer.WriteEndObject;
  FINALLY
    StringWriter.Free;
    Writer.Free;
  END;
...
Trotzdem habe ich angefangen mich in die Neon-Library einzuarbeiten, da ich in Zukunft wohl häufiger mit Json zu tun habe werde. Und das de- und serialisieren von ganzen Klassen scheint damit leicht möglich.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:21 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