在C語言中,處理JSON數組時,有時需要將其轉換為對象數組。下面是一個簡單示例,演示如何使用C語言將JSON數組轉換為對象數組。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> struct Person{ char *name; int age; }; int main() { char * json_string = "[{\"name\":\"John\", \"age\":20},{\"name\":\"Alice\", \"age\":25},{\"name\":\"Bob\", \"age\":30}]"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root) { fprintf(stderr, "error: in %s: line %d: %s\n", error.source, error.line, error.text); return 1; } size_t array_size = json_array_size(root); struct Person *person_array = malloc(sizeof(struct Person) * array_size); for(size_t i = 0; i < array_size; i++) { json_t *object = json_array_get(root, i); json_t *name = json_object_get(object, "name"); json_t *age = json_object_get(object, "age"); const char * name_str = json_string_value(name); person_array[i].name = malloc(strlen(name_str) + 1); strcpy(person_array[i].name, name_str); person_array[i].age = json_integer_value(age); } // do something with person_array for (size_t i = 0; i < array_size; i++) { free(person_array[i].name); } free(person_array); json_decref(root); return 0; }
以上代碼使用了jansson庫,該庫提供了對JSON的解析和生成支持。
在代碼中,首先將JSON字符串加載到一個json_t對象中。然后使用json_array_size()函數獲取數組大小(即對象數量),并為對象數組分配內存。接下來,使用json_array_get()和json_object_get()函數獲取JSON對象的鍵值對。最后,創建一個Person結構體來存儲每個對象的name和age。
使用完畢后,釋放內存并銷毀JSON對象。
下一篇mysql分組隨機取數