在Web開發(fā)中,常常需要從服務(wù)端獲取數(shù)據(jù)并在前端進(jìn)行展示。此時(shí)使用JSON數(shù)據(jù)格式是一種非常常見的方式。C語(yǔ)言也可以使用JSON庫(kù)來(lái)實(shí)現(xiàn)JSON數(shù)據(jù)的生成和解析。
// example.c #include <stdio.h> #include <jansson.h> int main() { // 生成JSON數(shù)據(jù) json_t *obj = json_object(); json_object_set_new(obj, "name", json_string("Lucy")); json_object_set_new(obj, "age", json_integer(18)); json_object_set_new(obj, "gender", json_string("female")); // 轉(zhuǎn)化為字符串 char *str = json_dumps(obj, JSON_INDENT(4)); printf("%s\n", str); free(str); // 解析JSON數(shù)據(jù) char *json_str = "{\"name\":\"Lucy\",\"age\":18,\"gender\":\"female\"}"; json_error_t err; json_t *root = json_loads(json_str, 0, &err); json_t *name = json_object_get(root, "name"); printf("name: %s\n", json_string_value(name)); int age = json_integer_value(json_object_get(root, "age")); printf("age: %d\n", age); json_t *gender = json_object_get(root, "gender"); printf("gender: %s\n", json_string_value(gender)); json_decref(obj); json_decref(root); return 0; }
在這個(gè)例子中,我們使用了jansson庫(kù)生成JSON數(shù)據(jù),并將其轉(zhuǎn)化為字符串進(jìn)行輸出。還使用了json_loads函數(shù)解析JSON字符串,并通過(guò)json_object_get函數(shù)獲取JSON對(duì)象的值。