JSON是一種輕量級的數據交換格式,被廣泛運用于前后端數據傳輸。C語言為解析和生成JSON提供了多種方式。
CJSON是一個常用的C語言JSON解析器。它將JSON字符串解析為一個C語言中定義的對象,同時也可以將C語言中的對象轉化成JSON字符串。下面是一個簡單的示例。
#include <stdio.h>#include <cJSON.h>int main() { char *json_str = "{\"name\":\"小明\", \"age\":18}"; cJSON *json = cJSON_Parse(json_str); printf("姓名:%s\n", cJSON_GetObjectItem(json, "name")->valuestring); printf("年齡:%d\n", cJSON_GetObjectItem(json, "age")->valueint); cJSON_Delete(json); return 0; }
上述代碼解析了一個JSON字符串,并輸出其中的姓名和年齡字段。CJSON支持多種數據類型,包括string、number、boolean、null等。獲取JSON對象中不同數據類型的值的函數也各不相同。
另一個常用的C語言JSON庫是Jansson。Jansson用起來非常方便優雅。下面是一個簡單的生成JSON字符串的示例。
#include <stdio.h>#include <jansson.h>int main() { json_t *json = json_object(); json_object_set(json, "name", json_string("小明")); json_object_set(json, "age", json_integer(18)); char *json_str = json_dumps(json, JSON_INDENT(4) | JSON_COMPACT); printf("%s\n", json_str); free(json_str); json_decref(json); return 0; }
上述代碼生成了一個包含姓名和年齡字段的JSON對象,并將其轉化為JSON字符串輸出。Jansson使用了簡單易用的API,比如json_object_set()用于設置JSON對象中的值,而json_dumps()將JSON對象轉化為JSON字符串。