首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cJSON c++ -添加项对象

cJSON c++ -添加项对象
EN

Stack Overflow用户
提问于 2017-04-07 07:35:10
回答 2查看 3.8K关注 0票数 0

我在用cJSON库。对于使用JSON的body示例请求,如下所示:

代码语言:javascript
复制
{
  "user": {
    "name":"user name",
    "city":"user city"  
  }  
}

我添加这样的对象和它的工作:

代码语言:javascript
复制
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());

但现在我的身体有点不同了:

代码语言:javascript
复制
{
  "user": {
    "informations:"{
        "name1":"user name1",
        "name2":"user name 2"
    }
  }  
}

然后尝试添加这样的对象:

代码语言:javascript
复制
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客户机中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-07 08:56:10

虽然您没有指定,但是为什么您的代码不能工作,下面的代码应该会生成您提供的示例。

代码语言:javascript
复制
#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“文件,在这里您可以找到更多如何使用它的代码示例。

票数 1
EN

Stack Overflow用户

发布于 2020-07-23 08:09:13

这段代码看上去没问题。注意,客户端和服务器端的CJSON库版本是否一致。改变旧的CJSON库和新的CJSON库的数据结构可能会导致这个问题

旧版本:在这里输入图像描述如下:

代码语言:javascript
复制
#define cJSON_String 4

新增:在这里输入图像描述如下:

代码语言:javascript
复制
#define cJSON_String (1 << 4)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43272300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档