Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   JSON Add auch mit Objekts? (https://www.delphipraxis.net/215504-json-add-auch-mit-objekts.html)

Knutifrutti 16. Jul 2024 14:30

JSON Add auch mit Objekts?
 
Hi Leute,

wie erzeuge ich so etwas in JSON Builder:
Code:
{
  "NAME": "Wert",
  "METADATA": {
    "start_datetime": "2023-11-01 17:46:55.843",
    "end_datetime": "2023-11-24 09:11:03.101",
    "origin_file": "FileName.Par",
    "pm_version": "V8.5.5",
  },
  ....
}
Die Frage zielt darauf ab, wie ich mit nach diesem Verfahren
https://docwiki.embarcadero.com/Code...TL.JSONBuilder
mit Add() ein TPair mit einem JSON-Object (mit geschweiften Klammern) anstelle einem TPair mit Key/Value hinzufügen kann.
Value darf nur Integer usw. sein?
Für Hinweise wäre ich dankbar.

Knutifrutti.

Der schöne Günther 16. Jul 2024 15:01

AW: JSON Add auch mit Objekts?
 
Du kannst bei System.Json.TJsonObject ein fertiges Objekt mit AddPair(..) hinzufügen, mit dem TPairs.Add(..) aus
Delphi-Quellcode:
System.Json.Builders
aber komischerweise nicht.

Komische Überladungen für Dinge von denen ich noch nie gehört habe wie
Delphi-Quellcode:
TJsonCodeWScope
oder
Delphi-Quellcode:
TJsonOid
, aber
Delphi-Quellcode:
TJsonValue
hatten sie nicht auf dem Schirm...

Rolf Frei 16. Jul 2024 16:51

AW: JSON Add auch mit Objekts?
 
Du kannst bei BeginObject einen Namen (KEY) mitgeben:
Delphi-Quellcode:
uses
  System.DateUtils,
  System.JSON.Types,
  System.JSON.Writers,
  System.JSON.Builders;

procedure TForm1.FormCreate(Sender: TObject);
var
  Builder: TJSONObjectBuilder;
  Writer: TJsonTextWriter;
  StringWriter: TStringWriter;
  StringBuilder: TStringBuilder;

begin
  StringBuilder := TStringBuilder.Create;
  StringWriter := TStringWriter.Create(StringBuilder);
  Writer := TJsonTextWriter.Create(StringWriter);
  Writer.Formatting := TJsonFormatting.Indented;
  Builder := TJSONObjectBuilder.Create(Writer);

  Builder
    .BeginObject
      .Add('NAME','Wert')
      .BeginObject('METADATA')
        .Add('start_datetime', Now)
        .Add('end_datetime', IncHour(Now))
        .Add('origin_file', 'FileName.Par')
        .Add('pm_version', 'V8.5.5')
      .EndObject
    .EndObject;

  Memo1.Lines.Text := StringBuilder.ToString;
end;
Das erzeugt foglenden JSON:
Code:
{
    "NAME": "Wert",
    "METADATA": {
        "start_datetime": "2024-07-16T17:53:21.157+02:00",
        "end_datetime": "2024-07-16T18:53:21.157+02:00",
        "origin_file": "FileName.Par",
        "pm_version": "V8.5.5"
    }
}

Knutifrutti 17. Jul 2024 08:26

AW: JSON Add auch mit Objekts?
 
Vielan Dank, die Herren.:-D
Ich melde mich, wenn ich es erfolgreich umsetzen konnte.8-)

Knutifrutti 17. Jul 2024 14:18

AW: JSON Add auch mit Objekts?
 
So, hier das Ergebnis:
BeginObject mit einem Key ist die (einfache) Lösung.

Der schöne Günther 18. Jul 2024 05:36

AW: JSON Add auch mit Objekts?
 
Ja, aber das stand doch schon (sogar ohne zu scrollen) direkt auf der Seite, welche du in deinem ersten Beitrag auch gepostet hattest? 🤔


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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