QMsgPack更新-新增HasChild函数简化编程,并修正了ForcePath的一处Bug

【更新说明】

HasChild函数用于判定当前结点下,是否存在指定路径的子结点,如果存在,则返回True,同时,通过AChild参数返回找到的子结点,如果失败,则返回False,等价于下面的代码:

[Delphi]

AChild:=AMsgPack.ItemByPath(APath);
if AChild<>nil then
   ...
else
   ...

[C++]

AChild=AMsgPack->ItemByPath(APath);
if (AChild)
  ...
else
  ...

而使用HasChild后,上面的代码就精简为:

[Delphi]

if AMsgPack.HasChild(APath,AChild) then
   ...
else
   ...

[C++]

if AMsgPack.HasChild(APath,AChild) then
  ...
else
  ...

【问题描述】

QMsgPack的ForcePath在处理类似于下面的路径时,建立的对象层次不正确。

a.b[].c

正确的目录层次对应的Json结构应该是:

{
"a":{
  "b":[
    {
    "c":null
    }
    ]
  }
}

原来的代码错误生成的结果是:

{
"a":{
  "b":[
    null
    ]
  }
}

【严重程度】

中等

【更新级别】

建议

分享到: