mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 18:29:27 +02:00
* Add null in Array/Object if an element is Nil.
git-svn-id: trunk@34537 -
This commit is contained in:
parent
5be2dfd9c8
commit
0af46b90aa
@ -623,7 +623,6 @@ Resourcestring
|
||||
SErrCannotConvertFromObject = 'Cannot convert data from object value';
|
||||
SErrCannotConvertToObject = 'Cannot convert data to object value';
|
||||
SErrInvalidFloat = 'Invalid float value : %s';
|
||||
SErrInvalidInteger = 'Invalid float value : %s';
|
||||
SErrCannotSetNotIsNull = 'IsNull cannot be set to False';
|
||||
SErrCannotAddArrayTwice = 'Adding an array object to an array twice is not allowed';
|
||||
SErrCannotAddObjectTwice = 'Adding an object to an array twice is not allowed';
|
||||
@ -1074,7 +1073,7 @@ procedure TJSONData.DumpJSON(S: TStream);
|
||||
end;
|
||||
|
||||
Var
|
||||
I,C : Integer;
|
||||
I: Integer;
|
||||
O : TJSONObject;
|
||||
|
||||
begin
|
||||
@ -2049,13 +2048,20 @@ function TJSONArray.GetAsJSON: TJSONStringType;
|
||||
Var
|
||||
I : Integer;
|
||||
Sep : String;
|
||||
D : TJSONData;
|
||||
V : TJSONStringType;
|
||||
|
||||
begin
|
||||
Sep:=TJSONData.FElementSep;
|
||||
Result:='[';
|
||||
For I:=0 to Count-1 do
|
||||
begin
|
||||
Result:=Result+Items[i].AsJSON;
|
||||
D:=Items[i];
|
||||
if D<>Nil then
|
||||
V:=D.AsJSON
|
||||
else
|
||||
V:='null';
|
||||
Result:=Result+V;
|
||||
If (I<Count-1) then
|
||||
Result:=Result+Sep;
|
||||
end;
|
||||
@ -2093,7 +2099,10 @@ begin
|
||||
begin
|
||||
if MultiLine then
|
||||
Result:=Result+Ind;
|
||||
Result:=Result+Items[i].DoFormatJSON(Options,CurrentIndent+Indent,Indent);
|
||||
if Items[i]=Nil then
|
||||
Result:=Result+'null'
|
||||
else
|
||||
Result:=Result+Items[i].DoFormatJSON(Options,CurrentIndent+Indent,Indent);
|
||||
If (I<Count-1) then
|
||||
if MultiLine then
|
||||
Result:=Result+','
|
||||
@ -2671,6 +2680,8 @@ function TJSONObject.GetAsJSON: TJSONStringType;
|
||||
Var
|
||||
I : Integer;
|
||||
Sep : String;
|
||||
V : TJSONStringType;
|
||||
D : TJSONData;
|
||||
|
||||
begin
|
||||
Sep:=TJSONData.FElementSep;
|
||||
@ -2679,7 +2690,12 @@ begin
|
||||
begin
|
||||
If (Result<>'') then
|
||||
Result:=Result+Sep;
|
||||
Result:=Result+FElementStart+StringToJSONString(Names[i])+FElementEnd+Items[I].AsJSON;
|
||||
D:=Items[i];
|
||||
if Assigned(D) then
|
||||
V:=Items[I].AsJSON
|
||||
else
|
||||
V:='null';
|
||||
Result:=Result+FElementStart+StringToJSONString(Names[i])+FElementEnd+V;
|
||||
end;
|
||||
If (Result<>'') then
|
||||
Result:=FObjStartSep+Result+FObjEndSep
|
||||
@ -2807,6 +2823,9 @@ Var
|
||||
S : TJSONStringType;
|
||||
MultiLine,UseQuotes, SkipWhiteSpace : Boolean;
|
||||
NSep,Sep,Ind : String;
|
||||
V : TJSONStringType;
|
||||
D : TJSONData;
|
||||
|
||||
begin
|
||||
Result:='';
|
||||
UseQuotes:=Not (foDoNotQuoteMembers in options);
|
||||
@ -2833,7 +2852,12 @@ begin
|
||||
S:=StringToJSONString(Names[i]);
|
||||
If UseQuotes then
|
||||
S:='"'+S+'"';
|
||||
Result:=Result+S+NSep+Items[I].DoFormatJSON(Options,CurrentIndent,Indent);
|
||||
D:=Items[i];
|
||||
if D=Nil then
|
||||
V:='null'
|
||||
else
|
||||
v:=Items[I].DoFormatJSON(Options,CurrentIndent,Indent);
|
||||
Result:=Result+S+NSep+V;
|
||||
end;
|
||||
If (Result<>'') then
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user