在一些与其它平台或软件做衔接的时候,因为平台本身某些原因(如JSON解析工具不支持或者用 ORM搞的),我们有时候需要传一个成员为JSON字符串的东西给对方,例如:
{
"ext":"{\"originId\":1098,\"attached\":true}"
}
上面这个 JSON ,我们用 QJSON 编码方式如下:
var AJson:=AcquireJson;
with AJson.Add('ext') do
begin
Add('originId').AsInteger:=1098;
Add('attached').AsBoolean:=true;
AsString:=Encode([]);
end;
ReleaseJson(AJson);
反过来,如果我们要解析,则可以直接用下面的代码:
var AJson:=AcquireJson;
var AExt:TQJson;
...
if AJson.Has('ext',AExt) and AExt.TryParse(AExt.AsString) then
begin
var AOriginId:=AExt.IntByName('originId',0);
var Attached:=AExt.BoolByName('attached',false);
....
end;
上面用的 Delphi 的新语法,早期版本将变量声明独立出来就可以了。