以前一直用的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": [ {}, {} ] }, ] } 