小记
笔记
今天回公司了,回顾了一下之前学的东西,然后搞了一下cgi中对于json文件的处理的部分,实现接收前台传递的参数,然后用json文件保存,以及读取json文件向前台发送数据的功能。
对于接收前台数据并保存的功能实现
最终生成target.json文件
{
"interface": "/dev/ttyS0",
"devices": ["1019.json","1032.json", "1040.json"],
"speed": 9600,
"parity": "N",
"databits": 8,
"stopbits": 1,
"interval": 50,
"delay": 2
}
模拟前台传递数据:
char interface[]="/dev/ttyS0";
int speed=9600;
char parity[]="N";
int databits=8;
int stopbits=1;
int interval=1000;
int delay=2;
使用cJSON接收前台传递的数据并生成json格式:
char *cjson_str = NULL;
cJSON * targets = cJSON_CreateArray();
cJSON * target = cJSON_CreateObject();
cJSON * devices = cJSON_CreateArray();
cJSON_AddStringToObject(target,"interface",interface);
cJSON_AddNumberToObject(target,"speed",speed);
cJSON_AddStringToObject(target,"parity",parity);
cJSON_AddNumberToObject(target,"databits",databits);
cJSON_AddNumberToObject(target,"stopbits",stopbits);
cJSON_AddNumberToObject(target,"interval",interval);
cJSON_AddNumberToObject(target,"delay",delay);
for(int i=1000;i<=1003;i++){
char string[23];
char *json=".json";
char name[80];
sprintf(string,"%d",i);
sprintf(name,"%s%s",string,json);
//printf("%s\n",name);
cJSON_AddStringToObject(devices,"device",name);
}
cJSON_AddItemToObject(target,"devices",devices);
cjson_str=cJSON_Print(target);
printf("%s\n",cjson_str);
进行json字符串读取以及写入(我这里写的是从target.json读取数据写入到test.json):
FILE *fp;
char ch;
char * c;
char result[SIZE];
fp = fopen("target.json", "r");
if(fp==NULL){
printf("open_file_fail\n");
}else
{
printf("open_file_suc\n");
ch=fgetc(fp);
int i=0;
while(ch != EOF){
//putchar(ch);
result[i]=ch;
i++;
ch=fgetc(fp);
}
for(int j=0;j<i;j++){
printf("%c",result[j]);
FILE *fd;
fd=fopen("test.json","a");
fputc(result[j],fd);
fclose(fd);
}
}
fclose(fp);
写入成功
在这里我用的是使用字符数组存储读取到的json数据