Thema: Delphi JSON To Object Problem

Einzelnen Beitrag anzeigen

Benutzerbild von Samashy
Samashy

Registriert seit: 20. Feb 2004
Ort: Cottbus
127 Beiträge
 
Delphi 10.4 Sydney
 
#1

JSON To Object Problem

  Alt 17. Apr 2021, 10:32
Hallo, ich hoffe jemand kann mir weiterhelfen, ich stelle mich einfach zu prasselig an.
Ich habe ein JSON, welches ich gern in ein Object giessen möchte:
Code:
{"energyDetails": {
   "timeUnit": "YEAR",
   "unit": "Wh",
   "meters":   [
            {
         "type": "Production",
         "values": [         {
            "date": "2021-01-01 00:00:00",
            "value": 569863
         }]
      },
            {
         "type": "FeedIn",
         "values": [         {
            "date": "2021-01-01 00:00:00",
            "value": 285170
         }]
      },
            {
         "type": "SelfConsumption",
         "values": [         {
            "date": "2021-01-01 00:00:00",
            "value": 284693
         }]
      },
            {
         "type": "Purchased",
         "values": [         {
            "date": "2021-01-01 00:00:00",
            "value": 31557
         }]
      },
            {
         "type": "Consumption",
         "values": [         {
            "date": "2021-01-01 00:00:00",
            "value": 316250
         }]
      }
   ]
}}
Mein Objektc habe ich so aufgebaut:
Code:
 TValues = class
   private
         [JSONName('date')]
        Fdate: String;
         [JSONName('value')]
        Fvalue: Integer;
 published
      property date :String read Fdate write Fdate;
      property value :Integer read Fvalue write Fvalue;
 end;

 TMeters = class
   private
        [JSONName('type')]
       Ftype: String;
        [JSONName('values')]
       Fvalues: TValues;
   published
       property types : String read Ftype write Ftype;
       property values : TValues read Fvalues write Fvalues;
 end;

 TEnergyDetails = class
  private
      [JSONName('timeUnit')]
     FtimeUnit :String;
      [JSONName('unit')]
     Funit    :String;
      [JSONName('meters')]
     Fmeters  :TObjectList<Tmeters>;
  published
     property timeUnit : String read FtimeUnit write FtimeUnit;
     property units   : String read Funit write Funit;
     property meters  : TObjectList<Tmeters> read Fmeters write Fmeters;
 end;
Die Umwandlung wollte ich so machen:
Code:
  memo1.Text :=RESTResponse1.JSONValue.ToJSON;
        energyDetail:= TJson.JsonToObject<TEnergyDetails>(memo1.Text);
        listbox1.Items.Add(energyDetail.timeUnit);
        listbox1.Items.Add(energyDetail.units);
Es entsteht das Object, aber ist komplett leer.
('', '', nil)
Ich steh völlig auf dem Schlauch.

Kann mir bitte jemand den erhellenden Hinweis geben?

Danke,
Romy
  Mit Zitat antworten Zitat