2017-04-07 93 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