在C語言中,處理JSON格式的數據可以用到json庫。在這個庫中,可以對JSON數據進行解析、生成和操作等一系列操作。其中,在處理JSON樹的時候,可以使用以下代碼:
#include "json.h" #define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0])) /* ... */ struct json_object* get_object(struct json_object *jso, const char* name) { struct json_object *jo; if(json_object_object_get_ex(jso, name, &jo)) { return jo; } return NULL; } struct json_object* get_array_element(struct json_object *jso, int i) { struct json_object *jo; if(json_object_array_get_idx(jso, i, &jo)) { return jo; } return NULL; } struct json_object* create_obj(void) { return json_object_new_object(); } struct json_object* add_obj(struct json_object *jso, const char* name, struct json_object *value) { json_object_object_add(jso, name, value); return jso; } struct json_object* create_string(const char* value) { return json_object_new_string(value); } struct json_object* create_int(int value) { return json_object_new_int(value); } struct json_object* create_float(float value) { return json_object_new_double(value); } struct json_object* create_bool(bool value) { return json_object_new_boolean(value); } struct json_object* create_array(void) { return json_object_new_array(); } struct json_object* add_array_element(struct json_object *jso, struct json_object *value) { json_object_array_add(jso, value); return jso; }
在上述代碼中,函數get_object用于獲取JSON對象,在JSON樹中找到指定字段名的對象,并返回該對象的指針;函數get_array_element用于獲取JSON對象數組的某個成員。create_obj、add_obj、create_string、create_int、create_float、create_bool、create_array、add_array_element等函數則用于創建JSON對象、添加元素等操作。
以上這些函數,可以作為編寫C語言處理JSON數據的基礎庫。