【问题标题】:json-spirit - adding content to an object in an arryjson-spirit - 向数组中的对象添加内容
【发布时间】:2013-12-04 20:07:43
【问题描述】:

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

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

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

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

【问题讨论】:

  • 是的,这是可能的。但也完全有可能对象(图)已被复制。由于没有更多信息,我们无法确定。

标签: json boost-spirit push-back


【解决方案1】:

我假设您指的是这里的 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}]}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2017-08-04
    • 2013-09-23
    • 2011-03-31
    • 2018-10-04
    相关资源
    最近更新 更多