2015-04-07 698 views
2

我試圖使用這個函數,因爲我已經能夠找到的唯一例子是這個函數的不贊成版本,它有兩個參數。 較新的功能有三個,但是當我嘗試運行編譯,我得到的錯誤:提領指向不完全類型 棄用功能:*jobj = json_object_object_get(jobj,key) 新功能:*jobj = json_object_object_get_ex(jobj,key,value)如何提取json對象鍵值對使用json-c的值

我剛剛試過如下: json_object_get_string( json_object_object_get(new_obj,「foo」))

但我收到錯誤消息,這已被棄用。如果我使用新功能,我需要知道'價值'。但這就是關鍵,我只知道關鍵,我想提取價值。任何幫助將不勝感激,因爲我還沒有能夠找到除上述以外的任何示例

回答

3

我不確定您是否仍然需要此選項,但文檔與您遇到的錯誤相匹配。 json_object_object_get()函數已棄用json_object_object_get_ex()

更仔細的功能參數:

json_bool json_object_object_get_ex (struct json_object *obj, const char *key, 
struct json_object **value) 

value參數是輸出,沒有輸入。你提供一個json_object*的地址(或者一個指針),並且函數用返回值填充它。例如:

json_object* f(json_object* rootObj, const char* key) 
{ 
    json_object* returnObj; 
    if (json_object_object_get_ex(rootObj, key, &returnObj) 
    { 
     return returnObj; 
    } 
    return NULL; 
} 

來源:json-c API Documentation

+0

謝謝!我最終放棄了這個項目(和一個朋友一起做項目),而且自從我畢業以後(我的畢業院校IT課程只提供了C++),以期成爲一名Java開發人員,並且一直在學習Java;) – jewfro