Я пытаюсь создать json с помощью quickjson, и у меня возникают некоторые неожиданные проблемы с генерированием правильного вывода.Создание собственного json-образа quickjson
Я создания и заполнения документа, как это:
Document d;
d.SetObject();
rapidjson::Document::AllocatorType& allocator = d.GetAllocator();
size_t sz = allocator.Size();
d.AddMember("version", 1, allocator);
d.AddMember("testId", 2, allocator);
d.AddMember("group", 3, allocator);
d.AddMember("order", 4, allocator);
Value tests(kArrayType);
Value obj(kObjectType);
Value val(kObjectType);
obj.AddMember("id", 1, allocator);
string description = "a description";
val.SetString(description.c_str(), static_cast<SizeType>(description.length()), allocator);
obj.AddMember("description", val, allocator);
string help = "some help";
val.SetString(help.c_str(), static_cast<SizeType>(help.length()), allocator);
obj.AddMember("help", val, allocator);
string workgroup = "a workgroup";
val.SetString(workgroup.c_str(), static_cast<SizeType>(workgroup.length()), allocator);
obj.AddMember("workgroup", val, allocator);
val.SetBool(true);
obj.AddMember("online", val, allocator);
tests.PushBack(obj, allocator);
d.AddMember("tests", tests, allocator);
// Convert JSON document to string
rapidjson::StringBuffer strbuf;
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strbuf);
d.Accept(writer);
Когда я запускаю этот код, я ожидаю получить этот JSON:
{
"version": 1,
"testId": 2,
"group": 3,
"order": 4,
"tests": [
{
"id": 1,
"description": "a description",
"help": "some help",
"workgroup": "a workgroup",
"online": true
}
]
}
но реально генерируемой выходной ...
{
"version": 1,
"testId": 2,
"group": 3,
"order": 4,
"tests": [
{
"id": 1,
"description": "a description",
"help": "some help",
"workgroup": "a workgroup",
"online": tr{
"version": 1,
"testId": 2,
"group": 3,
"order": 4,
"tests": [
{
"id": 1,
"description": "a description",
"help": "some help",
"workgroup": "a workgroup",
"online": true
}
]
}
Любые идеи?
Вам нужно сделать магию '' allocator''? Или есть также перегрузки, где вы можете построить DOM без них? Моя кишка говорит мне, что это выглядит немного. – BitTickler
Кроме того, вы повторно используете один и тот же экземпляр '' val'' несколько раз. Возможно, это случай, который не используется. – BitTickler
Из того, что я могу сказать, я могу удалить распределитель из вызовов SetString и не имеет никакого эффекта. О повторном использовании val, я уже пробовал, не используя его повторно, и результат такой же. –