gpt4 book ai didi

c++ - 具有多个值的 JSON 数组 C++

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:37 25 4
gpt4 key购买 nike

我有这个正文请求示例:

{
"users": [{
"userId": 123
}, {
"userId": 1234
}]
}

对于前面的示例,我收到一个 std::list<UsersId>* VUsers有我的用户 ID(在本例中为“123”和“1234”),创建 cJSON array ,迭代我的列表并获取所有 userId。 (注意:UsersId 是我使用的一个辅助类,并在构造函数中接收一个 int)

cJSON* cJsonUsers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "VUsers", cJsonUsers);

std::list<UsersId>::const_iterator itUsers = VUsers->begin();
while (itUsers != VUsers->end())
{
cJSON *cJsonVNode = cJSON_CreateObject();
cJSON_AddItemToArray(cJsonUsers, cJsonUser);

cJSON_AddNumberToObject(cJsonUser, "userId", itUsers->userId);
++itVNodes;
}

但知道我想要相同但更简单/容易并且需要将正文请求更改为这样的内容:

{
"users": {
"userId": [123, 1234]
}
}

我正在使用这个 C++ 库 -> https://github.com/DaveGamble/cJSON但我不明白如何实现我需要的修改。

编辑 2(解析 JSON)

cJSON* cJsonUsers = cJSON_GetObjectItem(root, "users");
if (!cJsonUsers) return 0;
if (cJsonUsers->type != cJSON_Array) return 0;

std::list<VUserId>* users = new std::list<VUserId>();
cJSON* cJsonVUser;
cJSON_ArrayForEach(cJsonVUser, cJsonUsers)
{
cJSON* cJsonVUserId = cJSON_GetObjectItem(cJsonVUser, "userId");
if (!cJsonVUserId) continue;

int user_id = cJsonVUserId->valueint;

VUserId userId(user_id);
users->push_back(userId);
}

最佳答案

这样的事情可以工作,即在循环外创建对象和数组,并在循环内插入数字:

cJSON* cJsonUsers = cJSON_CreateObject();
cJSON_AddItemToObject(root, "users", cJsonUsers);

cJSON* cJsonUserId = cJSON_CreateArray();
cJSON_AddItemToObject(cJsonUsers, "userId", cJsonUserId);

std::list<UsersId>::const_iterator itUsers = VUsers->begin();
while (itUsers != VUsers->end())
{
cJSON_AddItemToArray(cJsonUserId, cJSON_CreateNumber(itUsers->userId));
++itVNodes;
}

请注意,有些语言是 more convenient to manipulate JSON如果你有灵 active (免责声明:我参与了其中一些的设计)。当然,总会有一些用例,当您必须使用 C++ 并且库在其中很有意义时。

对于 C++ 或 Java 等语言,传统意义上的对象与 XML 或 JSON 等数据格式之间存在阻抗不匹配。例如,使用标准化的、声明式的和功能性的 XQuery 3.1,不需要太多代码就可以将第一个文档转换为第二个文档:

let $original-document := json-doc("users.json")
return map {
"users" : map {
"userId" : array { $original-document?users?*?userId }
}
}

关于c++ - 具有多个值的 JSON 数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281086/

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