C JSON數(shù)組是一種用于處理JSON數(shù)據(jù)的數(shù)據(jù)類型,可以將多個JSON對象放入一個數(shù)組中。使用C語言編寫的程序可以使用C JSON庫來解析和創(chuàng)建JSON數(shù)組。
#include <stdio.h> #include <jansson.h> int main() { json_t *array = json_array(); // 創(chuàng)建一個JSON數(shù)組對象 json_t *obj1 = json_object(); // 創(chuàng)建第一個JSON對象 json_object_set_new(obj1, "name", json_string("John")); // 添加屬性 json_object_set_new(obj1, "age", json_integer(30)); json_array_append_new(array, obj1); // 將第一個對象添加至數(shù)組 json_t *obj2 = json_object(); // 創(chuàng)建第二個JSON對象 json_object_set_new(obj2, "name", json_string("Mary")); // 添加屬性 json_object_set_new(obj2, "age", json_integer(25)); json_array_append_new(array, obj2); // 將第二個對象添加至數(shù)組 char *json_str = json_dumps(array, JSON_INDENT(2)); // 將JSON數(shù)組轉(zhuǎn)為字符串 printf("%s\n", json_str); json_decref(array); // 釋放JSON數(shù)組對象 free(json_str); // 釋放字符串內(nèi)存 return 0; }
上面的程序創(chuàng)建了一個JSON數(shù)組,并在其中添加了兩個JSON對象,然后將整個數(shù)組轉(zhuǎn)換成JSON字符串并輸出。可以看到,JSON數(shù)組的格式是用方括號括起來的,每個對象之間用逗號分隔:
[ { "name": "John", "age": 30 }, { "name": "Mary", "age": 25 } ]
使用C JSON庫可以輕松地解析JSON數(shù)組,并訪問其中的各個對象和屬性。下面是一個簡單的示例:
#include <stdio.h> #include <jansson.h> int main() { const char *json_str = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Mary\",\"age\":25}]"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); // 解析JSON字符串 for(int i = 0; i< json_array_size(root); i++) { json_t *obj = json_array_get(root, i); // 獲取數(shù)組中的第 i 個對象 const char *name = json_string_value(json_object_get(obj, "name")); // 獲取對象中的 name 屬性 int age = json_integer_value(json_object_get(obj, "age")); // 獲取對象中的 age 屬性 printf("%s, %d\n", name, age); } json_decref(root); // 釋放JSON對象 return 0; }
上面的程序使用json_loads函數(shù)解析JSON字符串,并使用json_array_size和json_array_get函數(shù)獲取數(shù)組中的每個對象。然后按照名稱獲取了每個對象的 name 和 age 屬性,最后輸出了它們的值。