在C語言中,我們可以使用json-c這個庫來解析JSON數據。下面我們將說明如何解析包含多個JSON對象的數據。
#include <stdio.h> #include <stdlib.h> #include <json-c/json.h> int main(int argc, char **argv) { char *json_str = "{\"person1\":{\"name\":\"Tom\",\"age\":20},\"person2\":{\"name\":\"Jerry\",\"age\":25}}"; struct json_object *json_obj = json_tokener_parse(json_str); enum json_type type = json_object_get_type(json_obj); if(type == json_type_object) { int obj_length = json_object_object_length(json_obj); for(int i = 0; i< obj_length; i++) { const char* obj_name = json_object_name(json_object_object_get_idx(json_obj, i)); struct json_object *sub_obj = json_object_object_get(json_obj, obj_name); printf("Object: %s\n", obj_name); printf("Name: %s\n", json_object_get_string(json_object_object_get(sub_obj, "name"))); printf("Age: %d\n\n", json_object_get_int(json_object_object_get(sub_obj, "age"))); } } json_object_put(json_obj); return 0; }
首先,我們需要將JSON數據轉化為json_object類型的對象。在上面的代碼中,我們使用了json_tokener_parse()方法將JSON字符串解析成json_object對象。
然后,我們使用json_object_get_type()方法判斷該對象的類型是否為JSON對象,如果是,我們需要遍歷該對象中的每一個JSON子對象。
我們可以使用json_object_object_length()方法獲取JSON對象的長度,然后遍歷所有的子對象。使用json_object_object_get_idx()可以獲取對象中的子對象,并使用json_object_name()獲取子對象的名稱。獲取子對象中的值需要使用json_object_object_get()方法。在這個例子中,我們用json_object_get_string()方法獲取name屬性的值,用json_object_get_int()方法獲取age屬性的值。
最后,我們需要使用json_object_put()方法釋放json_object對象。