在使用C語(yǔ)言解析json數(shù)據(jù)時(shí),有時(shí)需要判斷json中是否存在某個(gè)key,對(duì)于這種情況,我們可以使用以下方法:
#include <stdio.h> #include <jansson.h> int main() { char* json_str = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if(!json_is_object(root)) { printf("json格式錯(cuò)誤\n"); return 1; } const char* key = "name"; if(json_object_get(root, key)) { printf("json中存在key:%s\n", key); } else { printf("json中不存在key:%s\n", key); } json_decref(root); return 0; }
代碼中,我們先使用json_loads函數(shù)將json字符串加載為json_t對(duì)象。然后通過json_is_object判斷json_t對(duì)象是否為json對(duì)象,如果不是,說明格式錯(cuò)誤。
接著通過json_object_get獲取json對(duì)象中對(duì)應(yīng)key的值,如果值存在,說明該key存在,否則不存在。
注意,獲取json對(duì)象中的值時(shí),如果對(duì)應(yīng)key不存在,json_object_get返回NULL,我們需要通過判斷返回值是否為NULL來確定key是否存在。