在C語言中,解析JSON是很常見的需求。雖然可以手寫解析函數,但是使用內置的JSON解析框架可以更加高效、簡潔。以下介紹幾種常見的C語言內置JSON解析框架。
第一種是cJSON,這是一個輕量級的JSON解析器。cJSON的優點在于其簡單易用,不依賴任何第三方庫。下面是使用cJSON解析JSON字符串的示例代碼:
cJSON *root = cJSON_Parse(json_string); cJSON *item = cJSON_GetObjectItem(root, "name"); char *name = cJSON_GetStringValue(item);
第二種是YAJL,這是一個快速、易擴展的JSON解析器。YAJL的優點在于其解析速度非常快,可以處理大規模的JSON數據。下面是使用YAJL解析JSON字符串的示例代碼:
yajl_val node; char error_buffer[1024]; yajl_handle handle = yajl_alloc(&callbacks, NULL, (void *) ctx); yajl_config(handle, yajl_allow_partial_values, 1); yajl_config(handle, yajl_dont_validate_strings, 1); yajl_config(handle, yajl_allow_commented_strings, 1); int retval = yajl_parse(handle, data, length); yajl_free(handle);
第三種是JSON Parser,這是一個小巧、高效的JSON解析器。JSON Parser的優點在于其內存占用極小,適合嵌入式系統。以下是使用JSON Parser解析JSON字符串的示例代碼:
struct json_value_s *root; char *error_pos = NULL; json_error_t error; root = json_parse(value, strlen(value), &error_pos, &error); if (!root) { printf("JSON parsing failed: %s\n", error.text); return; } struct json_object_s *object = json_value_as_object(root); struct json_object_element_s *element; for (element = object->start; element; element = element->next) { printf("name=%s, value=%s\n", element->name->string, element->value->string); }
以上三種JSON解析框架都有各自的優點和適用范圍,開發者可以根據具體需求進行選擇。