![]() |
System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Ich habe diesen Code:
Code:
procedure TTabbedwithNavigationForm.DataToJSON;
var Builder: TJSONObjectBuilder; FileStream: TFileStream; sPath: string; StreamWriter: TStreamWriter; Writer: TJsonTextWriter; begin sPath:= TPath.GetLibraryPath; FileStream := TFileStream.Create(sPath+'data.json',fmCreate); StreamWriter:= TStreamWriter.Create(FileStream); Writer := TJsonTextWriter.Create(StreamWriter); Writer.Formatting := TJsonFormatting.Indented; Builder := TJSONObjectBuilder.Create(Writer); Builder .BeginObject .BeginArray('Transaction') .BeginObject.Add('id', 662713) .Add('firstName', 'John') .Add('lastName', 'Doe') .Add('price', 2.1) .AddNull('parent_id') .Add('validated', true) .BeginObject('protocol') .Add('timestamp',DateTimeToStr(now)) .Add('action','plus') .EndObject .EndObject .EndArray .EndObject; mmoLog.Lines.Add(Builder.AsJSON); <- Hier kommt die Meldung: Dieser Vorgang ist ohne zugewiesene Callback-Funktion nicht zulässig. end; Frage 1: Welche callback-Funktion ist da gemeint? Frage 2: Ich möchte den JSON String haben, der in die Datei gespeichert wird. Mir gelingt bis jetzt nur eines von beiden: Entweder mit einem anderen Stream + dann habe ich den Text oder so wie hier, dann habe ich die Datei. Aber beides gleichzeitig? Was übersehe ich? Danke! |
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
|
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Eigentlich nicht. Die Writer sind ja assigned. Im Code sehe ich zwar, dass das Fehlen eines Readers ein Problem ist, aber wo und warum ich den ins Spiel bringen soll, erkenne ich nicht.
|
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Nachtrag: Ich möchte das Umkopieren vermeiden. Ich könnte ja den JSION String erzeugen, den einer StringList zuweisen und dann erst speichern. Aber da das ein großes JSON Konstrukt ist (bzw wird) würde ich das gern vermeiden.
|
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn ich das ausführen lasse, dann stoppt der Debugger (wegen besagter Exception) da
Anhang 50408 Damit ist doch klar, woran es liegt und auch welche Callback-Funktion gemeint ist. Nimm den Konstruktor wo du die GetReader-CallbackMethode angeben kannst und gib eine an. |
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Die Doku sagt, AsJSON liefert den JSON String zurück, sagt aber nichts von einem Reader.
Ich habe jetzt kein Delphi bei der Hand, aber ich erinnere mich nur an Konstruktoren für WRITER. Da es für dich so klar ist, was muss ich tun, damit mein Beispiel funktioniert? |
AW: System.JSON TJsonObjectBuilder - fehlende Callback-Funktion
Zitat:
Delphi-Quellcode:
Siehst du den zweiten Konstruktor, den mit den
constructor Create(const AJSONWriter: TJSONWriter); overload;
constructor Create(const AJSONWriter: TJSONWriter; AGetReader: TGetReaderProc; AReleaseReader: TReleaseReaderProc; AResetWriter: TResetWriterProc); overload;
Delphi-Quellcode:
Argumenten?
T...Proc
Den musst du verwenden (wie ich schon geschrieben habe). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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