- values ist ein Array
- meters ebenso (arrays sind keine TObjectList)
Die JsonName-Attribute kannst du weglassen, wenn das Feld lediglich dem Json-Namen mit vorangestellten F entspricht (value -> FValue). Dabei kann der Buchstabe nach dem F auch großgeschrieben werden.
Versuch's mal so:
Delphi-Quellcode:
type
TValue = class
private
Fdate: string;
Fvalue: Integer;
published
property date: string read Fdate write Fdate;
property value: Integer read Fvalue write Fvalue;
end;
TValues = TArray<TValue>;
TMeter = class
private
Ftype: string;
Fvalues: TValues;
public
destructor Destroy; override;
published
property types: string read Ftype write Ftype;
property values: TValues read Fvalues write Fvalues;
end;
TMeters = TArray<TMeter>;
TEnergyDetails = class
private
FtimeUnit: string;
Funit: string;
Fmeters: TMeters;
public
destructor Destroy; override;
published
property timeUnit: string read FtimeUnit;
property units: string read Funit;
property meters: TMeters read Fmeters;
end;
implementation
destructor TMeter.Destroy;
var
I: Integer;
begin
for I := 0 to Length(FValues) - 1 do
FValues[I].Free;
inherited;
end;
destructor TEnergyDetails.Destroy;
var
I: Integer;
begin
for I := 0 to Length(Fmeters) - 1 do
Fmeters[I].Free;
inherited;
end;
Wenn du TObjecList für ein Json-Array verwenden willst empfehle ich diesen Artikel:
Serializing Generic Object Lists with TJson