{
This unit was automatically created by JtdPasCodegen, do not edit.
}
unit unit_Json_Sample;
{$MODE OBJFPC}{$H+}{$B-}
interface
uses
SysUtils, lgJson, lgJtdTypes;
type
TJsonSample = class sealed(TJtdObject)
private
FIndex: TJtdInt32;
FValue1: TJtdString;
FValue2: TJtdString;
FValue3: TJtdString;
FValue4: TJtdString;
procedure SetIndex(aValue: TJtdInt32);
procedure SetValue1(aValue: TJtdString);
procedure SetValue2(aValue: TJtdString);
procedure SetValue3(aValue: TJtdString);
procedure SetValue4(aValue: TJtdString);
protected
procedure DoReadJson(aNode: TJsonNode); override;
procedure DoReadJson(aReader: TJsonReader); override;
procedure DoWriteJson(aWriter: TJsonStrWriter); override;
public
class function GetJtdClass: TJtdEntityClass; override;
procedure Clear; override;
{ refers to "Index" JSON property }
property Index: TJtdInt32 read FIndex write SetIndex;
{ refers to "Value1" JSON property }
property Value1: TJtdString read FValue1 write SetValue1;
{ refers to "Value2" JSON property }
property Value2: TJtdString read FValue2 write SetValue2;
{ refers to "Value3" JSON property }
property Value3: TJtdString read FValue3 write SetValue3;
{ refers to "Value4" JSON property }
property Value4: TJtdString read FValue4 write SetValue4;
end;
implementation
{ TJsonSample }
class function TJsonSample.GetJtdClass: TJtdEntityClass;
begin
Result := TJsonSample;
end;
procedure TJsonSample.Clear;
begin
FreeAndNil(FIndex);
FreeAndNil(FValue1);
FreeAndNil(FValue2);
FreeAndNil(FValue3);
FreeAndNil(FValue4);
end;
procedure TJsonSample.SetIndex(aValue: TJtdInt32);
begin
if aValue = FIndex then exit;
FIndex.Free;
FIndex := aValue;
end;
procedure TJsonSample.SetValue1(aValue: TJtdString);
begin
if aValue = FValue1 then exit;
FValue1.Free;
FValue1 := aValue;
end;
procedure TJsonSample.SetValue2(aValue: TJtdString);
begin
if aValue = FValue2 then exit;
FValue2.Free;
FValue2 := aValue;
end;
procedure TJsonSample.SetValue3(aValue: TJtdString);
begin
if aValue = FValue3 then exit;
FValue3.Free;
FValue3 := aValue;
end;
procedure TJsonSample.SetValue4(aValue: TJtdString);
begin
if aValue = FValue4 then exit;
FValue4.Free;
FValue4 := aValue;
end;
{$PUSH}{$WARN 5057 OFF}
procedure TJsonSample.DoReadJson(aNode: TJsonNode);
var
p: TJsonNode.TPair;
Flags: array[0..4] of Boolean;
I: Integer;
begin
if not aNode.IsObject then ReadError;
Clear;
System.FillChar(Flags, SizeOf(Flags), 0);
for p in aNode.Entries do
case p.Key of
'Index':
begin
FIndex := TJtdInt32(TJtdInt32.ReadJson(p.Value));
Flags[0] := True;
end;
'Value1':
begin
FValue1 := TJtdString(TJtdString.ReadJson(p.Value));
Flags[1] := True;
end;
'Value2':
begin
FValue2 := TJtdString(TJtdString.ReadJson(p.Value));
Flags[2] := True;
end;
'Value3':
begin
FValue3 := TJtdString(TJtdString.ReadJson(p.Value));
Flags[3] := True;
end;
'Value4':
begin
FValue4 := TJtdString(TJtdString.ReadJson(p.Value));
Flags[4] := True;
end;
else
UnknownProp(p.Key);
end;
for I := 0 to System.High(Flags) do
if not Flags[I] then
case I of
0: PropNotFound('Index');
1: PropNotFound('Value1');
2: PropNotFound('Value2');
3: PropNotFound('Value3');
4: PropNotFound('Value4');
else
end;
end;
{$POP}
{$PUSH}{$WARN 5057 OFF}
procedure TJsonSample.DoReadJson(aReader: TJsonReader);
var
Flags: array[0..4] of Boolean;
I: Integer;
begin
if aReader.TokenKind <> tkObjectBegin then ReadError;
Clear;
System.FillChar(Flags, SizeOf(Flags), 0);
repeat
if not aReader.Read then ReadError;
if aReader.TokenKind = tkObjectEnd then break;
case aReader.Name of
'Index':
begin
FIndex := TJtdInt32(TJtdInt32.ReadJson(aReader));
Flags[0] := True;
end;
'Value1':
begin
FValue1 := TJtdString(TJtdString.ReadJson(aReader));
Flags[1] := True;
end;
'Value2':
begin
FValue2 := TJtdString(TJtdString.ReadJson(aReader));
Flags[2] := True;
end;
'Value3':
begin
FValue3 := TJtdString(TJtdString.ReadJson(aReader));
Flags[3] := True;
end;
'Value4':
begin
FValue4 := TJtdString(TJtdString.ReadJson(aReader));
Flags[4] := True;
end;
else
UnknownProp(aReader.Name);
end;
until False;
for I := 0 to System.High(Flags) do
if not Flags[I] then
case I of
0: PropNotFound('Index');
1: PropNotFound('Value1');
2: PropNotFound('Value2');
3: PropNotFound('Value3');
4: PropNotFound('Value4');
else
end;
end;
{$POP}
procedure TJsonSample.DoWriteJson(aWriter: TJsonStrWriter);
begin
aWriter.BeginObject;
aWriter.AddName('Index');
Index.WriteJson(aWriter);
aWriter.AddName('Value1');
Value1.WriteJson(aWriter);
aWriter.AddName('Value2');
Value2.WriteJson(aWriter);
aWriter.AddName('Value3');
Value3.WriteJson(aWriter);
aWriter.AddName('Value4');
Value4.WriteJson(aWriter);
aWriter.EndObject;
end;
end.