在很多應用中,使用數據表格是很常見的一個功能,因為它可以方便地展示大量數據。而對于前端開發來說,經常需要將這些數據以JSON的形式發送到后端或者展示在頁面上,因此需要將數據表格轉化為JSON。接下來我們就來探討如何使用C語言將Datable轉化為JSON。
// 定義一個Datable結構體 typedef struct{ char **data; // 存放數據的指針數組 size_t rowCount; // 數據行數 size_t columnCount; // 數據列數 char **columns; // 存放列名的指針數組 } Datable; // 將Datable轉化為JSON格式字符串 char *datableToJson(Datable datable){ char *jsonString; // 存放JSON字符串的指針 char line[1024]; // 存放單行JSON的字符串 size_t i, j; // 循環計數器 // 計算JSON字符串所需空間 size_t jsonStringSize = 0; jsonStringSize += datable.rowCount * (datable.columnCount * 10 + 3) + 2; // 計算數據部分所需空間 jsonStringSize += (datable.columnCount * 20 + 3) + 2; // 計算列名部分所需空間 jsonStringSize += 3; // 計算JSON字符串最前面的"{"和最后面的"}" // 分配空間 jsonString = (char*) malloc(jsonStringSize); strcpy(jsonString, "{"); // JSON字符串最前面的"{" // 寫入Datable的列名部分 strcpy(line, "\"columns\":["); for(i = 0; i< datable.columnCount; i++){ sprintf(line + strlen(line), "\"%s\"%s", datable.columns[i], (i == datable.columnCount - 1 ? "" : ",")); } sprintf(line + strlen(line), "]"); strcat(jsonString, line); // 寫入Datable的數據部分 strcpy(line, ",\"data\":["); for(i = 0; i< datable.rowCount; i++){ strcat(line, "["); for(j = 0; j< datable.columnCount; j++){ sprintf(line + strlen(line), "\"%s\"%s", datable.data[i * datable.columnCount + j], (j == datable.columnCount - 1 ? "" : ",")); } strcat(line, "]"); strcat(line, (i == datable.rowCount - 1 ? "" : ",")); } strcat(line, "]"); strcat(jsonString, line); strcat(jsonString, "}"); // JSON字符串最后面的"}" return jsonString; }
通過上面的代碼,我們可以將一個Datable結構體轉化為JSON格式的字符串,其中列名部分的鍵為"columns",數據部分的鍵為"data"。轉化后的JSON字符串可以返回給調用方,或者直接作為響應輸出給客戶端。