C語言中,使用json轉(zhuǎn)換的時候,經(jīng)常會遇到將json數(shù)組轉(zhuǎn)換成C語言中的結(jié)構(gòu)體數(shù)組或者鏈表的需求。下面我們來學習一下如何將json數(shù)組轉(zhuǎn)化為C語言中對應的數(shù)據(jù)結(jié)構(gòu)。
#include <stdio.h>
#include <jansson.h>
#define MAX_LENGTH 1024
struct Product {
char name[MAX_LENGTH];
int price;
int count;
};
int main(int argc, const char * argv[]) {
char *json_string = "[{\"name\": \"apple\", \"price\": 5, \"count\": 10}, {\"name\": \"banana\", \"price\": 3, \"count\": 20}]";
json_error_t error;
json_t *json = json_loads(json_string, 0, &error);
if (!json) {
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return 1;
}
if (!json_is_array(json)) {
fprintf(stderr, "error: root is not an array\n");
json_decref(json);
return 1;
}
size_t size = json_array_size(json);
printf("size: %d\n", size);
struct Product *products = malloc(sizeof(struct Product) * size);
for (int i=0; i
以上代碼演示了如何將一個包含兩個產(chǎn)品信息的json數(shù)組轉(zhuǎn)換成了結(jié)構(gòu)體數(shù)組,每個結(jié)構(gòu)體包含了產(chǎn)品名稱、價格和數(shù)量。需要注意的是,在使用json解析的過程中需要對讀取到的json進行類型檢查,以避免解析錯誤。