JSON(JavaScript Object Notation)字符串是一種常用的數據交換格式,而CSV(Comma Separated Values)是另一種經常用來存儲和傳輸數據的格式。雖然在很多情況下JSON比CSV更為靈活和易用,但有些時候我們需要將JSON數據轉換成CSV格式。在C語言中,我們可以使用現有的JSON和CSV庫實現這個功能。
首先,我們需要引入JSON和CSV庫的頭文件:
#include <stdio.h> #include <jansson.h> #include <csv.h>
接下來,我們可以讀取JSON字符串,將其轉換成JSON對象,并解析出其中的數據:
const char *json_str = "{\"name\":\"John Doe\",\"age\":30,\"email\":\"johndoe@example.com\"}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if (!root) { printf("ERROR: %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 *email = json_string_value(json_object_get(root, "email"));
接下來,我們可以使用CSV庫創建CSV writer,并將數據寫入CSV文件:
FILE *file = fopen("output.csv", "w"); csv_writer_t *writer = csv_writer_new(file); csv_write_field(writer, "Name"); csv_write_field(writer, "Age"); csv_write_field(writer, "Email"); csv_write_record(writer); csv_write_field(writer, name); csv_write_field(writer, "%d", age); csv_write_field(writer, email); csv_write_record(writer); csv_writer_free(writer); fclose(file);
在這個例子中,我們首先創建了一個CSV writer,并使用csv_write_field()函數寫入CSV文件的字段。在寫入完一行數據后,我們使用csv_write_record()函數寫入CSV文件的一條記錄。最后,我們釋放writer,關閉文件。
這就是在C語言中將JSON字符串轉換成CSV的基本方法。當然,除了上面提到的方法外,還有很多其他的JSON和CSV庫,可以根據自己的需求選擇合適的庫。