[教程]如何在 QJSON 中添加一个 JSON 字符串结点

在一些与其它平台或软件做衔接的时候,因为平台本身某些原因(如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 的新语法,早期版本将变量声明独立出来就可以了。

分享到: