实习日记(6-8)

小记

笔记

今天回公司了,回顾了一下之前学的东西,然后搞了一下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数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值