2017-04-07 87 views
0

我正在使用cJSON库(https://github.com/DaveGamble/cJSON)。对于JSON身体例如要求是这样的:cJSON C++ - 添加项目对象

{ 
    "user": { 
    "name":"user name", 
    "city":"user city" 
    } 
} 

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

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()); 

但现在我有一个身体JSON稍有不同:

{ 
    "user": { 
    "informations:"{ 
     "name1":"user name1", 
     "name2":"user name 2" 
    } 
    } 
} 

并尝试添加这样的对象:

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++或我的Java客户端发送数据做我的C + +服务器。

非常感谢。

回答

0

尽管您没有指定,但为什么您的代码无法正常工作,下面的这段代码应该会生成您提供的示例。

#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”文件,您可以在其中找到更多的代码示例如何使用它。

+0

我的“信息”对象到达null。好的你的代码基本上和我的一样。好的,可能问题出在我的客户端,我们不会将正确的数据发送到我的C++服务器。谢谢 ;) – Pik93