[Pas2js] issue with json null values in fcl-web sqldbrestdata.pp
Simone Giacomelli
simone.giacomelli at gmail.com
Tue Oct 6 17:26:11 CEST 2020
Dear coders,
I think I found a fix for a problem (?) in the function SetParamFromData
below.
The problem is that when one has a json null in D:TJSONData, the procedure
will raise an exception and halt the post for the record.
See the comments below in the code for further explanation.
This is the link to the trunk:
https://svn.freepascal.org/svn/fpc/trunk/packages/fcl-web/src/restbridge/sqldbrestdata.pp
so you can check the original code.
Is this an advisable and acceptable change?
Best regards
Simone Giacomelli
[code=pascal]
procedure TSQLDBRestDBHandler.SetParamFromData(P: TParam; F:
TSQLDBRestField;
D: TJSONData);
Var
S : String;
begin
// if Assigned(D) then // <-------
// S:=D.AsString; // <------- if it's JSON null it will raise an
exception
if not Assigned(D) or D.IsNull then // <------- added "D.IsNull" because
of JSON null
P.Clear
else if Assigned(F) then
Case F.FieldType of
rftInteger : P.AsInteger:=D.AsInteger;
rftLargeInt : P.AsLargeInt:=D.AsInt64;
rftFloat : P.AsFloat:=D.AsFloat;
rftDate :
P.AsDateTime:=ScanDateTime(GetString(rpDateFormat),D.AsString);
rftTime :
P.AsDateTime:=ScanDateTime(GetString(rpTimeFormat),D.AsString);
rftDateTime :
P.AsDateTime:=ScanDateTime(GetString(rpDateTimeFormat),D.AsString);
rftString : P.AsString:=D.AsString;
rftBoolean : P.AsBoolean:=D.AsBoolean;
rftBlob :
{$IFNDEF VER3_0}
P.AsBlob:=BytesOf(DecodeStringBase64(D.AsString));
{$ELSE}
P.AsBlob:=DecodeStringBase64(D.AsString);
{$ENDIF}
else
P.AsString:=D.AsString;
end
else
P.AsString:=D.AsString;
end;
[/code]
--
Simone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/pas2js/attachments/20201006/d7c1f79a/attachment.htm>
More information about the Pas2js
mailing list