Summary
TJsonSerializer is a specialized TSerializer class type for writing values in JSON format, using built-in VCL JSON classes, declared in DBXJSON.pas unit.
Syntax
TJsonSerializer = class(TSerializer)
Constructors
| Name | Description | |
![]() | Create(PJSONValue,Integer) | |
![]() | Create(PJSONValue) | |
![]() | Create(TProc<TJSONValue>) |
Methods
| Name | Description | |
![]() | DoBeginArray | |
![]() | DoBeginObject | |
![]() | DoEndArray | |
![]() | DoEndObject | |
![]() | DoWrite |
Remarks
Unlike XML, JSON library do not provide a document notion. So, initially there are no standard container, into which serializing values can be stored. Moreover, if following JSON format strictly, it allows only single root level value. However, serialization engine is designed to support multiple root level values.
As a result TJsonSerializer has been designed to store root level values in a user provided storage. TJsonSerializer object can be created either, by specifying address and length of the buffer or a reference to callback function.
Each root-level data value will be written into provided buffer (or via callback function) as a TJSONValue object. If the buffer is too small to hold the next serializing value, exception will be raised.
All root level values stored in user provided buffer (or via callback function) should be destroyed by the user.
Examples
| Delphi | Copy Code
|
|---|---|
var
v: array[0..1] of TJSONValue;
szr: TJsonSerializer;
begin
FillChar(v, SizeOf(v), 0);
try
szr := TJsonSerializer.Create(@v, 2);
try
srz.Value<TBook>(book1);
srz.Value<TBook>(book2);
finally
szr.Free;
end;
Memo1.Lines.Add(v[0].ToString);
Memo1.Lines.Add(v[1].ToString);
finally
v[0].Free;
v[1].Free;
end;
end;
| |
| Delphi | Copy Code
|
|---|---|
szr := TJsonSerializer.Create(procedure(V: TJSONValue)
begin
Memo1.Lines.Add(V.ToString);
end);
try
srz.Value<TBook>(book1);
srz.Value<TBook>(book2);
finally
szr.Free;
end;
| |
See Also
Reference
- NG.Serialization.Json.TJsonDeserializer
- TSerializer
- TDeserializer
- NG.Serialization.Json Namespace

