arrays - Find Value Type of a JSONValue (TJSONArray or TJSONObject) -
i standard library in delphi xe8
if assigned(jsonvalue) case jsonvalue.valuetype of jsarray : processarrayresponse(jsonvalue tjsonarray); jsobject : processobjectresponse(jsonvalue tjsonobject); end; end;
(this sample come https://github.com/deltics/delphi.libs/wiki/json using deltics.json library).
does know how standard library ?
thank you
you use is
operator:
if assigned(jsonvalue) begin if jsonvalue tjsonarray processarrayresponse(tjsonarray(jsonvalue)) else if jsonvalue tjsonobject processobjectresponse(tjsonobject(jsonvalue)); end;
if want use case
statement have create own lookup:
type jsonvaluetype = (jsarray, jsobject, ...); function getjsonvaluetype(jsonvalue: tjsonvalue): jsonvaluetype; begin if jsonvalue tjsonarray exit(jsarray); if jsonvalue tjsonobjct exit(jsobject); ... end; ... if assigned(jsonvalue) begin case getjsonvaluetype(jsonvalue) of jsarray : processarrayresponse(tjsonarray(jsonvalue)); jsobject : processobjectresponse(tjsonobject(jsonvalue)); end; end;
or:
type jsonvaluetype = (jsarray, jsobject, ...); var jsonvaluetypes: tdictionary<string, jsonvaluetype>; ... if assigned(jsonvalue) begin case jsonvaluetypes[jsonvalue.classname] of jsarray : processarrayresponse(tjsonarray(jsonvalue)); jsobject : processobjectresponse(tjsonobject(jsonvalue)); end; end; ... initialization jsonvaluetypes := tdictionary<string, jsonvaluetype>.create; jsonvaluetypes.add('tsonarray', jsarray); jsonvaluetypes.add('tsonobject', jsobject); ... finalization jsonvaluetypes.free;
Comments
Post a Comment