C語言中的JSON結構體數組是一種非常常見的數據類型。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于網絡數據的傳輸和存儲。在C語言中,我們通常使用結構體數組來表示JSON數據,同時也需要使用第三方庫來實現JSON的解析和生成。
#include <stdio.h>
#include <jansson.h>
int main()
{
const char *json_data = "{\"name\": \"Tom\", \"age\": 20, \"gender\": \"male\"}";
json_t *root = NULL;
json_error_t error;
root = json_loads(json_data, 0, &error);
if(!root)
{
printf("JSON解析失敗: %s\n", error.text);
return 1;
}
const char *name = json_string_value(json_object_get(root, "name"));
int age = json_integer_value(json_object_get(root, "age"));
const char *gender = json_string_value(json_object_get(root, "gender"));
printf("name: %s\n", name);
printf("age: %d\n", age);
printf("gender: %s\n", gender);
json_decref(root);
return 0;
}
上面的代碼演示了如何使用jansson庫來解析一個JSON字符串,并將解析結果存儲在結構體中。在這個例子中,我們使用json_object_get()函數來獲取JSON對象中的屬性值,并使用相關函數來將屬性值轉換為C語言中的基本數據類型。
JSON結構體數組在C語言中也可以使用類似的方式進行解析和生成。對于JSON數組,我們需要使用json_array_size()函數來獲取數組的長度,然后使用json_array_get()函數來獲取數組中的元素。對于生成JSON數組,我們可以使用json_array()函數創建一個新的數組對象,并對其進行操作。下面給出一個簡單的例子:
#include <stdio.h>
#include <jansson.h>
int main()
{
json_t *array, *value;
array = json_array();
value = json_string("apple");
json_array_append(array, value);
value = json_string("banana");
json_array_append(array, value);
value = json_string("orange");
json_array_append(array, value);
char *json_data = json_dumps(array, JSON_PRESERVE_ORDER | JSON_ENCODE_ANY);
printf("%s\n", json_data);
json_decref(array);
return 0;
}
上面的代碼演示了如何使用jansson庫來生成一個包含三個字符串元素的JSON數組,并將其輸出為JSON字符串。在這個例子中,我們使用json_string()函數來創建字符串對象,并使用json_array_append()函數將字符串添加到數組中。最后,我們使用json_dumps()函數將數組轉換為JSON字符串,并進行打印。
下一篇c解析json文件函數