#include "listfmt_json.h" #include cJSON* listfmt_json_begin(void) { return cJSON_CreateArray(); } void listfmt_json_add_string(cJSON* row, const char* key, const char* val) { if (!row || !key) return; if (val) cJSON_AddStringToObject(row, key, val); else cJSON_AddNullToObject(row, key); } void listfmt_json_add_number(cJSON* row, const char* key, double val) { if (!row || !key) return; cJSON_AddNumberToObject(row, key, val); } cJSON* listfmt_json_new_row(cJSON* array) { if (!array) return NULL; cJSON* row = cJSON_CreateObject(); if (!row) return NULL; if (!cJSON_AddItemToArray(array, row)) { cJSON_Delete(row); return NULL; } return row; } void listfmt_json_finish(cJSON* array) { if (!array) return; char* text = cJSON_Print(array); if (text) { fputs(text, stdout); fputc('\n', stdout); cJSON_free(text); } cJSON_Delete(array); }