由于近年來互聯網應用日益增多,因此對于數據的處理能力的要求也越來越高。用C語言實現JSON的大數據系列化是實現高效數據上傳與保存的重要手段之一。
#include#include #include #include #include "cJSON.h" #define BUFFER_SIZE 1024*1024*10 //設置緩沖區大小 //模擬大的數據 const char* bigData() { cJSON* root=cJSON_CreateObject(); cJSON_AddStringToObject(root,"name","Tom"); cJSON_AddNumberToObject(root,"age",18); cJSON_AddStringToObject(root,"addr","NewYork"); cJSON_AddNumberToObject(root,"height",175); cJSON_AddNumberToObject(root,"weight",60); cJSON_AddNumberToObject(root,"score",99); cJSON_AddStringToObject(root,"id","20191111"); cJSON_AddStringToObject(root,"class","三年一班"); cJSON_AddStringToObject(root,"school","MIT"); cJSON_AddStringToObject(root,"major","Computer Science"); cJSON_AddNumberToObject(root,"excellent",1); return cJSON_PrintUnformatted(root); } int main() { char* buffer=malloc(BUFFER_SIZE); memset(buffer,0,BUFFER_SIZE); long len=0; //使用for循環模擬大數據量 for(int i=0;i<5000;i++) { const char* str=bigData(); len+=strlen(str); //計算每次的字符串長度并累加 if(len>=BUFFER_SIZE) { printf("緩沖區溢出\n"); break; } strcat(buffer,str); free((void*)str); } printf("%s",buffer); return 0; }
實現大數據系列化的核心代碼部分主要是使用了cJSON庫,其可以很方便地實現json的創建,解析以及打印。上述代碼中,首先定義了一個緩沖區,用于暫存序列化之后的大數據,在循環構造數據時每次都將其字符串添加到這個緩沖區中,最后一次性輸出即可。