AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Objectlist Serialisieen und Deserialisieren mittels Rest.Json

Objectlist Serialisieen und Deserialisieren mittels Rest.Json

Ein Thema von kompi · begonnen am 6. Aug 2025 · letzter Beitrag vom 6. Aug 2025
 
kompi

Registriert seit: 27. Apr 2012
Ort: Duisburg
62 Beiträge
 
Delphi 12 Athens
 
#1

Objectlist Serialisieen und Deserialisieren mittels Rest.Json

  Alt 6. Aug 2025, 15:25
Hallo zusammen,

ich versuche, mittels Rest.Json Objekte zu serialisieren und deserialisieren. Diese Objekte stammen alle von einem Basisobjekt ab. Einige dieser Objekte habe Subobjekte, die eine Objectlist enthalten.

Delphi-Quellcode:
  TKeyValue = class
    private
      fname : string;
      fvalue : Tvalue;
      function getasstring : string;
      procedure setasstring(avalue : string);
      function getname : string;
      procedure setname(aname : string);
      function getasextended : Extended;
      procedure setasextended(avalue : Extended);
      function getasinteger : Integer;
      procedure setasinteger(avalue : Integer);
    public
      constructor Create; overload;
// constructor Create(Aname : string); overload;
      property Asstring : string read getasstring write setasstring;
      property AsExtended : Extended read getasextended write setasextended;
      property AsInteger : Integer read getasinteger write setasinteger;
      Property Name : string read getname write setname;
  end;

type
  JsonObjectListKeyValueAttribute = class(JsonObjectListAttribute<TKeyValue>)
  end;

type
  [JsonObjectlistKeyValue]
  TkeyValueElements = class(TObjectlist<TKeyValue>)
  end;

type
   TKeyValueListe = class
     private
      [JSONOwned(false),JsonObjectListKeyValue]
      FABWElements : TkeyValueElements;
      fname : string;
      [JSONOwned(false),JsonStrings]
      fstringlist : Tstringlist;
         function checkstring(AValue: string): Boolean;
      function searchinliste(aname : string) : TKeyValue;
      function getvalue(aindex : string) : TKeyValue;
      procedure setvalue(aindex : string; avalue : TKeyValue);
      function getvalueatindex(aindex : integer) : TKeyValue;
      function getname : string;
      procedure setname(aname : string);
      function gettostring(adelimiter : string) : string;
      function gettodelimstring : string;
      function gettostringcomplete(adelimiter : string) : string;
      function gettodelimstringcomplete : string;
      procedure settostringcomplete(adelimiter : string; avalue : string);
      procedure settodelimstringcomplete(avalue : string);
      function gettostringlist : tstrings;
      procedure settostringlist(astring : Tstrings);
    public
      constructor Create; overload;
      constructor Create(Aname : string); overload;
      destructor Destroy; override;
      procedure assign(Akeyvalueliste : Tkeyvalueliste);
      procedure add(aname, avalue: string); overload;
      procedure add(aname: string; avalue: integer); overload;
      procedure add(aname: string; avalue: extended); overload;
      procedure Reset;
      function Count : integer;
      property TostringList : Tstrings read gettostringlist write settostringlist;
      property Value[aindex : string] : TKeyValue read getvalue write setvalue;default;
      property Valueatindex[aindex : integer] : TKeyValue read getvalueatindex;
      Property Name : string read getname write setname;
{$WARNINGS off}
      Property Tostring[adelimiter : string] : string read gettostring;
{$Warnings on}
      Property Todelimstring : string read gettodelimstring;
      Property Tostringcomplete[adelimiter : string] : string read gettostringcomplete write settostringcomplete;
      Property Todelimstringcomplete : string read gettodelimstringcomplete write settodelimstringcomplete;
  end;
Ich bin genauso vorgegangen, wie Uwe Raabe dies mal hier gepostet hat. Ich verwenden sich seine Unit Rest.Json.Helpers von github ohne Änderungen.
Es geht um das Feld Fabwelements. Dies ist eine Objectlist von Tkeyvalue. Immer, wenn Elemente in dieser Objectlist vorhanden sind, erhalte ich beim Verlassen des TypeObjectsConverter die Meldung "tkpointer wird nicht unterstützt". Das Subobjekt ist im übrigen oben angezeigt.
Mache ich hier noch etwas falsch?
Gruß Kompi
Detlef Schmitz
  Mit Zitat antworten Zitat
 

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