我有这个正文请求示例:
{
"users": [{
"userId": 123
}, {
"userId": 1234
}]
}
对于前面的示例,我收到一个std::list<UsersId>* VUsers
具有我的 userId(在本例中为“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);
}