【教程】QJSON 创建根结点为数组的 JSON 内容

默认情况下,QJson创建后的实例是 jdtNull 类型(空类型),当向其添加子元素,会自动调整为 jdtObject (对象类型),如果是用 AsXXX赋值时,会自动根据接口改变结点类型。

如果我们在 QJson 中,要将根结点改变数组类型,就需要明确指定这一点:

var
   AJson:TQJson;
begin
   AJson:=TQJson.Create;//或者 AcquireJson
   AJson.DataType:=jdtArray;//明确根结点类型为JSON数组

在明确这一点以后,后面的代码写法就和普通的 JSON 对象一样了,区别在于由于不需传 Key 值 ,直接调用不带参数的 Add 函数来添加子元素,下面是一些示例:

   AJson.Add.AsString:='123';
   AJson.Add.AsInteger:=123;
   with AJson.AddArray('') do//因为根结点是数组,所以给出名称没有意义,编码时会忽略
   begin
      Add.AsFloat:=1.23;
      Add.AsInteger:=23;
   end;
   with AJson.Add do
   begin
      Add('a1').AsString:='Object child';
      Add('a2').AsInteger:=1234;
   end;

上面的代码执行后,生成的JSON结构如下 :

[“123”,123,[1.23,23],{“a1″:”object child”,”a2″:1234}]

分享到: