背景: 我想用JSON表示深层次结构。 I.e作业有节点,节点有CPU,CPU有设备循环,循环有设备。 我的数据在数据库中。我正在使用访问者模式在我导航时回访VisitJob,VisitNode,VisitCPU,深入了解数据库。
我使用堆栈跟踪当前的父wObject。我已经添加了顶级并为节点准备了一个数组。添加了Node的JSON,然后我回调以添加该节点的CPU。
问题似乎是:我已经为Node对象做了push.back,但是想要添加更多嵌套内容。 CPU的内容不会出现在最终字符串中。
是否可以在将对象推回其父对象后向对象添加更多内容(我有它的指针)?
答案 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}]}]