Skip to content

Commit 106f005

Browse files
author
Arnaud Bouchez
committed
core: some minor JSON unserialization tweaks
1 parent 73460cf commit 106f005

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/core/mormot.core.json.pas

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,9 +1936,9 @@ TRttiJson = class(TRttiCustom)
19361936
Options: pointer{PDocVariantOptions} = nil): PtrInt; override;
19371937
/// unserialize some JSON input into Data^ - warning: Json is modified in-place
19381938
// - as used by LoadJson() and similar high-level functions
1939-
procedure ValueLoadJson(Data: pointer; var Json: PUtf8Char; EndOfObject: PUtf8Char;
1939+
function ValueLoadJson(Data: pointer; var Json: PUtf8Char; EndOfObject: PUtf8Char;
19401940
ParserOptions: TJsonParserOptions; CustomVariantOptions: PDocVariantOptions;
1941-
ObjectListItemClass: TClass; Interning: TRawUtf8Interning);
1941+
ObjectListItemClass: TClass; Interning: TRawUtf8Interning): PUtf8Char;
19421942
/// how many iterations could be done one a given value
19431943
// - returns -1 if the value is not iterable, or length(DynArray) or
19441944
// TRawUtf8List.Count or TList.Count or TSynList.Count
@@ -10877,10 +10877,10 @@ function TRttiJson.ValueToVariant(Data: pointer; out Dest: TVarData;
1087710877
result := Cache.Size;
1087810878
end;
1087910879

10880-
procedure TRttiJson.ValueLoadJson(Data: pointer; var Json: PUtf8Char;
10880+
function TRttiJson.ValueLoadJson(Data: pointer; var Json: PUtf8Char;
1088110881
EndOfObject: PUtf8Char; ParserOptions: TJsonParserOptions;
1088210882
CustomVariantOptions: PDocVariantOptions; ObjectListItemClass: TClass;
10883-
Interning: TRawUtf8Interning);
10883+
Interning: TRawUtf8Interning): PUtf8Char;
1088410884
var
1088510885
ctxt: TJsonParserContext;
1088610886
begin
@@ -10902,9 +10902,13 @@ procedure TRttiJson.ValueLoadJson(Data: pointer; var Json: PUtf8Char;
1090210902
Json := ctxt.Json
1090310903
else
1090410904
Json := nil;
10905+
result := ctxt.Json;
1090510906
end
1090610907
else
10908+
begin
1090710909
Json := nil;
10910+
result := nil;
10911+
end;
1090810912
end;
1090910913

1091010914
function TRttiJson.ValueIterateCount(Data: pointer): integer;
@@ -11353,7 +11357,7 @@ procedure _GetDataFromJson(Data: pointer; var Json: PUtf8Char;
1135311357
CustomVariantOptions: PDocVariantOptions; Tolerant: boolean;
1135411358
Interning: TRawUtf8InterningAbstract);
1135511359
begin
11356-
(Rtti as TRttiJson).ValueLoadJson(Data, Json, EndOfObject,
11360+
TRttiJson(Rtti).ValueLoadJson(Data, Json, EndOfObject,
1135711361
JSONPARSER_DEFAULTORTOLERANTOPTIONS[Tolerant],
1135811362
CustomVariantOptions, nil, TRawUtf8Interning(Interning));
1135911363
end;

src/mormot.commit.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
'2.3.10970'
1+
'2.3.10971'

0 commit comments

Comments
 (0)