我需要创建以下结构,但是我正努力使用json来做到这一点。
{
"ParentTree": [{
"Name": "Name3",
"children": [{
"Name": "Name2",
"children": [{
"Name": "Name1",
"children": [{
"Name": "Name0"
}]
}]
}]
}]
}
我在下面尝试过,但是无法获得如何动态添加名称和子项键的方法。
json jsonObj;
jsonObj["ParentTree"] = json::array();
for (auto index = 3; index >= 0; index--) {
jsonObj["ParentTree"].push_back(json::object());
}
以前,它是通过以下方式完成的,而不使用nlohmann json:
std::string PResult = "\"ParentTree\":[{";
for (int j = 3; j >= 0; j--)
{
std::string num = std::to_string(j);
PResult += "\"Name\":\"";
PResult += "Name";
PResult += num + "\",";
if (j == 0) break;
PResult += "\"children\":[{";
}
PResult.erase(PResult.length() - 1);
for (int j = 3; j >= 0; j--)
{
PResult += "}]";
}
答案 0 :(得分:0)
以下代码可构造所需的json对象。
大括号乍看之下可能会造成混乱,但是一旦您阅读了文档并对json::array()和json::object()的工作原理有了一个了解,您应该能够理解。 (阅读上面的超链接中的示例代码。)
#include "json.h"
#include <iostream>
using namespace nlohmann;
int main() {
json jsonObj;
jsonObj["ParentTree"] = json::array();
// Bottom-up approach: construct inside object first.
json child0 = json::array({json::object({{"Name", "Name0"}})});
json child1 = json::array( {json::object({{"Name", "Name1"}, {"children", child0}})} );
json child2 = json::array( {json::object({{"Name", "Name2"}, {"children", child1}})} );
jsonObj["ParentTree"] = json::array( {json::object({{"Name", "Name3"}, {"children", child2}})} );
std::cout << jsonObj.dump(2);
}