以前一直用的jsoncpp,各种好用。
考虑到效率,现在想迁移到RapidJSON,可是发现真的不会用,官方文档也看了,还是有疑问。因为觉得是自己的使用问题,发到GitHub上感觉不太合适,所以就发到这里了。请各位轻喷。
版本:试过master和1.0.1
问题1:
为什么以下的写法不对:
Document doc;
doc.SetObject();
Value v(kArrayType);
doc.AddMember("array1", v, doc.GetAllocator());
必须使用这种方式才行:
Document doc;
doc.SetObject();
Value v;
doc.AddMember("array1", v, doc.GetAllocator());
doc["array1"].SetArray();
问题2:
为什么以下代码段生成的json跟预想中的不一样
Document doc;
doc.SetObject();
Value v;
doc.AddMember("array1", v, doc.GetAllocator());
doc["array1"].SetArray();
for (int i = 0; i < 2; i++) {
Value obj;
doc["array1"].PushBack(obj, doc.GetAllocator());
doc["array1"][i].SetObject();
Value arrayOfObj;
doc["array1"][i].AddMember("array2", arrayOfObj, doc.GetAllocator());
doc["array1"][i]["array2"].SetArray();
for (int j = 0; j < 2; j++) {
Value obj1;
doc["array1"][i]["array2"].PushBack(obj1, doc.GetAllocator());
doc["array1"][i]["array2"][j].SetObject();
}
}
StringBuffer buffer;
PrettyWriter<StringBuffer> writer(buffer);
doc.Accept(writer);
const char* outputJson = buffer.GetString();
最后生成的json是:
{
"array1":
[
{
"array2":
[
{},
null
]
},
null
]
}
预想中的应该是:
{
"array1":
[
{
"array2":
[
{},
{}
]
},
{
"array2":
[
{},
{}
]
},
]
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.