C語言中可以使用json-c這個開源庫來操作json對象,其中包含了json的解析和生成函數,可以很方便地把字符串轉換成json對象。
首先需要在代碼中引入json-c頭文件:
#include <json-c/json.h>
然后使用json_tokener_parse函數將字符串解析為json對象:
const char *json_string = "{\"name\":\"Tom\", \"age\":20}"; struct json_object *json_obj = json_tokener_parse(json_string);
此時json_obj就是一個指向json對象的指針,可以使用json_object_put函數來釋放該對象:
json_object_put(json_obj);
json對象有多種類型,包括json_type_null、json_type_boolean、json_type_int、json_type_double、json_type_string、json_type_array和json_type_object。可以使用json_object_get_type函數來獲取json對象的類型:
enum json_type type = json_object_get_type(json_obj); switch (type) { case json_type_null: printf("json object is null type\n"); break; case json_type_boolean: printf("json object is boolean type\n"); break; case json_type_int: printf("json object is integer type\n"); break; case json_type_double: printf("json object is double type\n"); break; case json_type_string: printf("json object is string type\n"); break; case json_type_array: printf("json object is array type\n"); break; case json_type_object: printf("json object is object type\n"); break; }
可以使用json_object_object_get_ex函數來獲取json對象中的某個key對應的value:
struct json_object *name_obj; json_bool ret = json_object_object_get_ex(json_obj, "name", &name_obj); if (ret) { printf("name: %s\n", json_object_get_string(name_obj)); } else { printf("cannot find name key\n"); }
這些是C語言中利用json-c庫將字符串轉換成json對象的基本技巧,通過這些技巧可以更方便地使用json。