C datatable是一种常见的数据表格,在编程中常常需要将其转换为json格式。以下是使用C语言将datatable转换为json的示例。
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <jansson.h> #include <datatable.h> int main() { // 创建一个datatable datatable_t *dt = datatable_new(); // 添加列名 datatable_add_column(dt, "id"); datatable_add_column(dt, "name"); datatable_add_column(dt, "age"); // 添加行数据 datatable_add_row(dt, "1", "Tom", "18"); datatable_add_row(dt, "2", "Jerry", "20"); datatable_add_row(dt, "3", "Lucy", "22"); // datatable转json json_t *root = json_object(); json_t *columns = json_array(); json_t *data = json_array(); int count = datatable_column_count(dt); for (int i = 0; i < count; i++) { const char *col_name = datatable_column_name(dt, i); json_array_append_new(columns, json_string(col_name)); } int rows = datatable_row_count(dt); for (int i = 0; i < rows; i++) { json_t *row_data = json_array(); for (int j = 0; j < count; j++) { const char *cell_data = datatable_get_cell(dt, i, j); json_array_append_new(row_data, json_string(cell_data)); } json_array_append_new(data, row_data); } json_object_set_new(root, "columns", columns); json_object_set_new(root, "data", data); char *json_str = json_dumps(root, JSON_INDENT(4)); printf("%s\n", json_str); // 释放内存 free(json_str); json_decref(root); datatable_free(dt); return 0; }
在上面的示例中,我们使用了jansson库来处理json,并使用datatable_add_column和datatable_add_row来构建datatable。在转换为json时,我们通过循环构建了columns和data两个数组,最终使用json_object_set_new把它们放入一个json对象中,并使用json_dumps将其转换为json字符串。