|
|
@@ -231,10 +231,15 @@ begin
|
|
|
end;
|
|
|
|
|
|
procedure TBaseJSONReader.DoParse(AtCurrent, AllowEOF: Boolean);
|
|
|
-
|
|
|
+ procedure ParseString;
|
|
|
+ begin
|
|
|
+ if ((joUTF8 in Options) or (DefaultSystemCodePage<>CP_UTF8)) and (TypeInfo(TJSONStringType) <> TypeInfo(UTF8String)) then
|
|
|
+ StringValue(TJSONStringType(UTF8Decode(CurrentTokenString)))
|
|
|
+ else
|
|
|
+ StringValue(CurrentTokenString);
|
|
|
+ end;
|
|
|
var
|
|
|
T : TJSONToken;
|
|
|
-
|
|
|
begin
|
|
|
If not AtCurrent then
|
|
|
T:=GetNextToken
|
|
|
@@ -246,10 +251,7 @@ begin
|
|
|
tkNull : NullValue;
|
|
|
tkTrue,
|
|
|
tkFalse : BooleanValue(t=tkTrue);
|
|
|
- tkString : if ((joUTF8 in Options) or (DefaultSystemCodePage<>CP_UTF8)) and (TypeInfo(TJSONStringType) <> TypeInfo(UTF8String)) then
|
|
|
- StringValue(TJSONStringType(UTF8Decode(CurrentTokenString)))
|
|
|
- else
|
|
|
- StringValue(CurrentTokenString);
|
|
|
+ tkString : ParseString;
|
|
|
tkCurlyBraceOpen :
|
|
|
ParseObject;
|
|
|
tkCurlyBraceClose :
|