cJSON c++ - 添加项目 object
cJSON c++ - add item object
我正在使用 cJSON Library。对于带有 JSON 的 body 示例请求,如下所示:
{
"user": {
"name":"user name",
"city":"user city"
}
}
我像这样添加 objects 及其工作:
cJSON *root;
cJSON *user;
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJson_CreateObject());
cJSON_AddStringToObject(user, "name", name.c_str());
cJSON_AddStringToObject(user, "city", city.c_str());
但现在我有一个 body json 有点不同:
{
"user": {
"informations:"{
"name1":"user name1",
"name2":"user name 2"
}
}
}
并尝试像这样添加 object:
cJSON *root;
cJSON *user;
cJSON *info;
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJson_CreateObject());
cJSON_AddItemToObject(user,"informations", info = cJson_CreateObject());
cJSON_AddStringToObject(info, "name", name.c_str());
cJSON_AddStringToObject(info, "city", city.c_str());
这是使用 cJSON 执行此操作的正确方法吗?因为它不工作而且我不知道问题是在我的 C++ 中还是在将数据发送到我的 C++ 服务器的 Java 客户端中。
虽然您没有说明为什么您的代码不起作用,下面的这段代码应该会生成您提供的示例。
#include <iostream>
#include "cJSON.h"
int main() {
cJSON *root;
cJSON *user;
cJSON *info;
std::string name1 = "user name1";
std::string name2 = "user name 2";
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJSON_CreateObject());
cJSON_AddItemToObject(user,"informations", info = cJSON_CreateObject());
cJSON_AddStringToObject(info, "name1", name1.c_str());
cJSON_AddStringToObject(info, "name2", name2.c_str());
std::cout << cJSON_Print(root) << std::endl;
return 0;
}
cJSON 文档看起来非常简单,您的代码看起来也不错。 cJSON 源中还有一个 "test.c" 文件,您可以在其中找到更多代码示例,了解如何使用它。
这段代码看起来不错。注意客户端和服务端的CJSON库版本是否一致。旧CJSON库和新CJSON库的数据结构变化可能会导致这个问题
旧:
enter image description here
如下:
#define cJSON_String 4
新:
enter image description here
如下:
#define cJSON_String (1 << 4)
我正在使用 cJSON Library。对于带有 JSON 的 body 示例请求,如下所示:
{
"user": {
"name":"user name",
"city":"user city"
}
}
我像这样添加 objects 及其工作:
cJSON *root;
cJSON *user;
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJson_CreateObject());
cJSON_AddStringToObject(user, "name", name.c_str());
cJSON_AddStringToObject(user, "city", city.c_str());
但现在我有一个 body json 有点不同:
{
"user": {
"informations:"{
"name1":"user name1",
"name2":"user name 2"
}
}
}
并尝试像这样添加 object:
cJSON *root;
cJSON *user;
cJSON *info;
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJson_CreateObject());
cJSON_AddItemToObject(user,"informations", info = cJson_CreateObject());
cJSON_AddStringToObject(info, "name", name.c_str());
cJSON_AddStringToObject(info, "city", city.c_str());
这是使用 cJSON 执行此操作的正确方法吗?因为它不工作而且我不知道问题是在我的 C++ 中还是在将数据发送到我的 C++ 服务器的 Java 客户端中。
虽然您没有说明为什么您的代码不起作用,下面的这段代码应该会生成您提供的示例。
#include <iostream>
#include "cJSON.h"
int main() {
cJSON *root;
cJSON *user;
cJSON *info;
std::string name1 = "user name1";
std::string name2 = "user name 2";
root = cJSON_CreateObject();
cJSON_AddItemToObject(root,"user", user = cJSON_CreateObject());
cJSON_AddItemToObject(user,"informations", info = cJSON_CreateObject());
cJSON_AddStringToObject(info, "name1", name1.c_str());
cJSON_AddStringToObject(info, "name2", name2.c_str());
std::cout << cJSON_Print(root) << std::endl;
return 0;
}
cJSON 文档看起来非常简单,您的代码看起来也不错。 cJSON 源中还有一个 "test.c" 文件,您可以在其中找到更多代码示例,了解如何使用它。
这段代码看起来不错。注意客户端和服务端的CJSON库版本是否一致。旧CJSON库和新CJSON库的数据结构变化可能会导致这个问题
旧: enter image description here 如下:
#define cJSON_String 4
新: enter image description here 如下:
#define cJSON_String (1 << 4)