在C語言的開發(fā)過程中,經(jīng)常需要解析JSON數(shù)據(jù)并將其轉(zhuǎn)化為數(shù)組,以便在程序中進(jìn)行處理。以下是C語言中一些常用的JSON解析庫,以及如何使用它們來實(shí)現(xiàn)JSON數(shù)據(jù)轉(zhuǎn)化為數(shù)組的方法。
1. cJSON庫
#include "cJSON.h" cJSON *json = cJSON_Parse("your json text"); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { int len = cJSON_GetArraySize(json); for (int i = 0; i< len; i++) { cJSON *array = cJSON_GetArrayItem(json, i); int val = cJSON_GetNumberValue(array); printf("%d\n", val); } cJSON_Delete(json); }
2. Jansson庫
#includejson_t *json = json_loads("your json text", 0, NULL); if (!json) { printf("Error: json_loads failed.\n"); } else { int len = json_array_size(json); for (int i = 0; i< len; i++) { json_t *array = json_array_get(json, i); int val = json_integer_value(array); printf("%d\n", val); } json_decref(json); }
3. yajl庫
#include#include void handle_int(void *ctx, long long val) { printf("%lld\n", val); } void handle_array_start(void *ctx) {} void handle_array_end(void *ctx) {} yajl_callbacks callbacks = { NULL, NULL, handle_int, NULL, handle_array_start, handle_array_end }; yajl_handle handle = yajl_alloc(&callbacks, NULL, NULL); yajl_status status = yajl_parse(handle, "your json text", strlen("your json text")); yajl_free(handle);
總結(jié)
以上三個(gè)庫都是C語言中常用的JSON解析庫,使用起來都比較簡單。不同的庫有不同的API,但是實(shí)現(xiàn)的功能都是相同的,就是將JSON數(shù)據(jù)轉(zhuǎn)化為數(shù)組。其中,cJSON庫和Jansson庫都提供了較好的文檔和教程,yajl庫則沒有提供官方的中文文檔。在實(shí)際使用時(shí),可以根據(jù)具體情況選用不同的JSON解析庫。