淘先锋技术网

首页 1 2 3 4 5 6 7

C datatable是一种常见的数据表格,在编程中常常需要将其转换为json格式。以下是使用C语言将datatable转换为json的示例。

#include &ltstdlib.h&gt
#include &ltstdio.h&gt
#include &ltstring.h&gt
#include &ltjansson.h&gt
#include &ltdatatable.h&gt
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 &lt 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 &lt rows; i++) {
json_t *row_data = json_array();
for (int j = 0; j &lt 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字符串。