在C語(yǔ)言中,處理JSON格式的數(shù)據(jù)可以用到j(luò)son庫(kù)。在這個(gè)庫(kù)中,可以對(duì)JSON數(shù)據(jù)進(jìn)行解析、生成和操作等一系列操作。其中,在處理JSON樹(shù)的時(shí)候,可以使用以下代碼:
#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; }
在上述代碼中,函數(shù)get_object用于獲取JSON對(duì)象,在JSON樹(shù)中找到指定字段名的對(duì)象,并返回該對(duì)象的指針;函數(shù)get_array_element用于獲取JSON對(duì)象數(shù)組的某個(gè)成員。create_obj、add_obj、create_string、create_int、create_float、create_bool、create_array、add_array_element等函數(shù)則用于創(chuàng)建JSON對(duì)象、添加元素等操作。
以上這些函數(shù),可以作為編寫(xiě)C語(yǔ)言處理JSON數(shù)據(jù)的基礎(chǔ)庫(kù)。