json-spirit - 向数组中的对象添加内容

时间:2013-12-04 20:07:43

标签: json boost-spirit push-back

背景: 我想用JSON表示深层次结构。 I.e作业有节点,节点有CPU,CPU有设备循环,循环有设备。 我的数据在数据库中。我正在使用访问者模式在我导航时回访VisitJob,VisitNode,VisitCPU,深入了解数据库。

我使用堆栈跟踪当前的父wObject。我已经添加了顶级并为节点准备了一个数组。添加了Node的JSON,然后我回调以添加该节点的CPU。

问题似乎是:我已经为Node对象做了push.back,但是想要添加更多嵌套内容。 CPU的内容不会出现在最终字符串中。

是否可以在将对象推回其父对象后向对象添加更多内容(我有它的指针)?

1 个答案:

答案 0 :(得分:0)

我假设你指的是这里的json-spirit库:https://github.com/cierelabs/json_spirit(这是Spirit示例所依据的那个)。

调用push_back将返回对数组中json :: value对象的引用。然后,您可以继续修改该对象(通过引用)。

json::value some_list;

json::value my_object = json::construct(
  "{"
  "   \"foo\"  : 42    ,"
  "   \"bar\"  : 498.5 ,"
  "   \"bork\" : [null,23,false]"
  "}"
  );

json::value& object = some_list.push_back(my_object);

object["sub"] = json::construct("[ {\"id\": 1}, {\"id\": 2} ]");

std::cout << some_list << std::endl;

将导致:

[{"bar":498.5, "bork":[null, 23, false], "foo":42, "sub":[{"id":1}, {"id":2}]}]