在使用 C 語言生成嵌套 JSON 數據時,需要用到一些 JSON 庫,如 cJSON ,Jansson 等。這些庫可以幫助我們以輕松的方式生成 JSON 數據。
下面是一個使用 cJSON 庫生成嵌套 JSON 數據的例子:
#include <stdio.h> #include <cJSON.h> int main() { cJSON *root, *student, *name, *age, *score; root = cJSON_CreateObject(); // 創建 JSON 對象 // 創建一個包含學生信息的 JSON 對象 student = cJSON_CreateObject(); name = cJSON_CreateString("Tom"); cJSON_AddItemToObject(student, "name", name); age = cJSON_CreateNumber(20); cJSON_AddItemToObject(student, "age", age); // 創建一個包含成績的 JSON 數組 score = cJSON_CreateArray(); cJSON_AddNumberToObject(score, "", 80); cJSON_AddNumberToObject(score, "", 85); cJSON_AddNumberToObject(score, "", 90); cJSON_AddItemToObject(student, "score", score); cJSON_AddItemToObject(root, "student", student); char *json_str = cJSON_Print(root); printf("%s \n", json_str); cJSON_Delete(root); free(json_str); return 0; }
上述代碼生成了一個包含一個學生信息的 JSON 對象,包括學生姓名、年齡和成績。成績是一個 JSON 數組,包含三個元素。最后通過 cJSON_Print() 函數將 JSON 對象轉換為字符串。
使用 Jansson 庫生成嵌套 JSON 數據的方式類似。下面是一個使用 Jansson 庫生成嵌套 JSON 數據的例子:
#include <stdio.h> #include <jansson.h> int main() { json_t *root, *student, *name, *age, *score; root = json_object(); student = json_object(); name = json_string("Tom"); json_object_set_new(student, "name", name); age = json_integer(20); json_object_set_new(student, "age", age); score = json_array(); json_array_append_new(score, json_integer(80)); json_array_append_new(score, json_integer(85)); json_array_append_new(score, json_integer(90)); json_object_set(root, "student", student); json_object_set(student, "score", score); char *json_str = json_dumps(root, JSON_ENCODE_ANY | JSON_INDENT(4)); printf("%s \n", json_str); json_decref(root); free(json_str); return 0; }
這段代碼也生成了一個包含一個學生信息的 JSON 對象,包括學生姓名、年齡和成績。成績是一個 JSON 數組,包含三個元素。最后通過 json_dumps() 函數將 JSON 對象轉換為字符串,并使用 JSON_INDENT() 參數控制縮進。