gpt4 book ai didi

arrays - RapidJSON 添加一个结构数组

转载 作者:行者123 更新时间:2023-12-03 22:46:38 24 4
gpt4 key购买 nike

我希望能够使用 RapidJSON 创建以下 JSON 输出

{
"year": 2013,
"league": "national",
"teams": [
{
"teamname": "reds",
"teamcity": "cincinnati",
"roster": [
{
"playername": "john",
"position": "catcher"
},
{
"playername": "joe",
"position": "pitcher"
}
]
}
]
}

这是有效的 JSON...在 JSONLint.com 验证
我知道如何创建文档并使用 AddMember 添加“年份”和“联赛”。

我不知道也没有看到任何关于如何添加具有“团队”或“名册”等结构的数组的示例

如何添加作为结构数组的“团队”?
任何帮助或指向我的例子都会很棒。

最佳答案

假设我们有一个 std::vector 名册,其中包含返回 std::string& 的 Roster 类上的 PlayerName() 和 Postion() 访问器函数。

rapidjson::Document jsonDoc;
jsonDoc.SetObject();
rapidjson::Value myArray(rapidjson::kArrayType);
rapidjson::Document::AllocatorType& allocator = jsonDoc.GetAllocator();

std::vector<Roster*>::iterator iter = roster.begin();
std::vector<Roster*>::iterator eiter = roster.end();
for (; iter != eiter; ++iter)
{
rapidjson::Value objValue;
objValue.SetObject();
objValue.AddMember("playername", (*iter)->PlayerName().c_str(), allocator);
objValue.AddMember("position", (*iter)->Position().c_str(), allocator);

myArray.PushBack(objValue, allocator);
}

jsonDoc.AddMember("array", myArray, allocator);
rapidjson::StringBuffer strbuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strbuf);
jsonDoc.Accept(writer);

const char *jsonString = strbuf.GetString(); // to examine the encoding...

这将为您提供文档中的结构数组。要获得结构的其余部分,您需要做的就是将 Rapidjson 对象相互嵌套并使用 AddMember() 构建复杂的对象树。希望这可以帮助。

关于arrays - RapidJSON 添加一个结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com