[fpc-pascal] JSON & me - blind again?
Reinier Olislagers
reinierolislagers at gmail.com
Tue Mar 12 11:38:51 CET 2013
Hi list,
(FPC 2.6.0 or trunk)
Been fiddling a bit too long and strongly suspect PEBKAC/PICNIC (and my
seemingly perennial refusal to adapt to Object Pascal's way of dealing
with object references).
Thanks for your suggestions!
See the ===> marks below
var
CurrentPage: integer;
RequestResult: THttpResult;
CommJSON: TJSONObject;
begin
result:=INVALIDID;
CommJSON:=TJSONObject.Create;
try
try
// do an HTTP request and get a JSONData back.
//
RequestResult:=HttpRequestWithData(CommJSON,FCGIURL+'document/',rmPost);
if RequestResult.Code<>200 then
begin
//snip error handling
end
else
begin
//===> the line below works - so CommJSON is a valid object, right?
if Assigned(CommJSON) then
begin
//====> however, the next line gives a runerror(210): no vmt found
if (CommJSON.JSONType=jtObject) then
begin
if (CommJSON.IndexOfName('documentid',false)>-1) then
result:=CommJSON.Integers['documentid'];
end;
end;
end;
I'm not confident about
function HttpRequestWithData(AData: TJSONData; const AUrl: string;
const AMethod: TRequestMethod; const AContentType: string): THttpResult;
...
FreeAndNil(AData);
VData.Position := 0;
VParser := TJSONParser.Create(VData);
try
try
AData := VParser.Parse;
//====> so it destroys the object passed to it and recreates it
//====> but AData.JSONType does seem to be JSONObject...
More information about the fpc-pascal
mailing list