c++属性ツリーを使用してBoostにJSON配列を作成する
2202 ワード
boostプロパティツリーを使用してJSON配列を作成しようとしました.
documentation氏は「JSON配列はノードにマッピングされ,各要素は空の名前のサブノードである.
したがって、空の名前のプロパティ・ツリーを作成し、write_json(...)を呼び出して配列を取得したいのですが、ドキュメントには名前のないサブノードの作成方法が示されていません.ptree.add_child(「」、値)を試したことがありますが、これは次のように生成されます.
ドキュメントはこの点を解決していないようで、少なくともいかなる方法で、私は明らかにすることができます.誰が助けることができますか?
単純配列:
結果は次のとおりです.
オブジェクトの配列:
結果は次のとおりです.
これが役に立つことを願っています.
documentation氏は「JSON配列はノードにマッピングされ,各要素は空の名前のサブノードである.
したがって、空の名前のプロパティ・ツリーを作成し、write_json(...)を呼び出して配列を取得したいのですが、ドキュメントには名前のないサブノードの作成方法が示されていません.ptree.add_child(「」、値)を試したことがありますが、これは次のように生成されます.
Assertion `!p.empty() && "Empty path not allowed for put_child."' failed
ドキュメントはこの点を解決していないようで、少なくともいかなる方法で、私は明らかにすることができます.誰が助けることができますか?
単純配列:
#include
using boost::property_tree::ptree;
ptree pt;
ptree children;
ptree child1, child2, child3;
child1.put("", 1);
child2.put("", 2);
child3.put("", 3);
children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));
pt.add_child("MyArray", children);
write_json("test1.json", pt);
結果は次のとおりです.
{
"MyArray":
[
"1",
"2",
"3"
]
}
オブジェクトの配列:
ptree pt;
ptree children;
ptree child1, child2, child3;
child1.put("childkeyA", 1);
child1.put("childkeyB", 2);
child2.put("childkeyA", 3);
child2.put("childkeyB", 4);
child3.put("childkeyA", 5);
child3.put("childkeyB", 6);
children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));
pt.put("testkey", "testvalue");
pt.add_child("MyArray", children);
write_json("test2.json", pt);
結果は次のとおりです.
{
"testkey": "testvalue",
"MyArray":
[
{
"childkeyA": "1",
"childkeyB": "2"
},
{
"childkeyA": "3",
"childkeyB": "4"
},
{
"childkeyA": "5",
"childkeyB": "6"
}
]
}
これが役に立つことを願っています.