C語言有著較高的執行效率,為開發高性能的應用提供了有力的支撐。而JSON作為一種輕量級數據交換格式,被廣泛運用到各種領域,如Web服務、移動開發等。在C語言中,如何高效地解析和生成JSON數據呢?這就要用到C JSON庫了。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <json-c/json.h> void parse_json(char* json_str) { json_object *jobj; json_tokener *tok = json_tokener_new(); enum json_tokener_error jerr; jobj = json_tokener_parse_verbose(json_str, &tok, &jerr); if (jerr == json_tokener_success) { printf("Parsed JSON: %s\n", json_object_to_json_string(jobj)); } else { printf("Failed to parse JSON: %s\n", json_tokener_error_desc(jerr)); } json_object_put(jobj); json_tokener_free(tok); } int main(int argc, char *argv[]) { char json_str[] = "{\"name\":\"Lucas\",\"age\":30,\"gender\":\"male\"}"; struct timeval start, end; gettimeofday(&start, NULL); for (int i = 0; i< 100000; i++) { parse_json(json_str); } gettimeofday(&end, NULL); printf("Time taken: %ld microseconds\n", (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)); return 0; }
以上是一個使用CJSON庫解析JSON字符串的示例程序。在使用CJSON庫時,需要先引入頭文件“json-c/json.h”,然后通過json_tokener_parse_verbose()函數將JSON字符串解析成json_object對象,再使用json_object_to_json_string()等函數對JSON對象進行操作。
下面是一個JSON生成示例程序:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <json-c/json.h> void generate_json() { json_object *jobj, *jarray, *jstr; jobj = json_object_new_object(); jstr = json_object_new_string("Lucas"); json_object_object_add(jobj, "name", jstr); jstr = json_object_new_string("male"); json_object_object_add(jobj, "gender", jstr); jarray = json_object_new_array(); for (int i = 0; i< 3; i++) { jstr = json_object_new_string("apple"); json_object_array_add(jarray, jstr); } json_object_object_add(jobj, "fruits", jarray); printf("Generated JSON: %s\n", json_object_to_json_string(jobj)); json_object_put(jobj); } int main(int argc, char *argv[]) { generate_json(); return 0; }
以上是一個使用CJSON庫生成JSON字符串的示例程序。在使用CJSON庫時,需要先創建json_object對象,然后通過json_object_object_add()函數添加屬性或json_object_array_add()函數添加數組元素,最后通過json_object_to_json_string()函數將JSON對象轉化成字符串。
總的來說,C JSON庫提供了快速高效的JSON解析和生成方法,加快了C語言開發JSON應用的效率。