使用cJSON库更新json文件
2016-03-15 14:05
806 查看
测试程序的目的是更新已有的json文件。
下面是测试程序的代码
刚开始只修改了valueint的值,结果显示修改前后的结果一样。
![](http://img.blog.csdn.net/20160315140217125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后修改valuedouble的值,才能真能修改json文件。
![](http://img.blog.csdn.net/20160315140406391?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果只调用
所以如果想要修改valueint的值必须同时调用
引用链接:https://sourceforge.net/p/cjson/discussion/998970/thread/5c13b93f/
下面是测试程序的代码
#include "smartlight.h" #include "cJSON.h" cJSON *dofile(char *filename) { FILE *f; long len; char *data; cJSON *json,*ret; f=fopen(filename,"rb"); fseek(f,0,SEEK_END); len=ftell(f); fseek(f,0,SEEK_SET); data=(char*)malloc(len+1); fread(data,1,len,f); data[len]='\0'; json=cJSON_Parse(data); if (!json) { printf("Error before: [%s]\n",cJSON_GetErrorPtr()); ret = NULL; goto EXIT; } else { //printf("%s\n",data); ret = json; } EXIT: free(data); fclose(f); return ret; } int write_file(char *filename,char *out) { FILE *fp = NULL; fp = fopen(filename,"a+"); if(fp == NULL) { fprintf(stderr,"open file failed\n"); exit(-1); } fprintf(fp,"%s",out); if(fp != NULL) fclose(fp); } int main() { cJSON *root,*basicpara; char *out; root = dofile("basicparameter.cfg"); out = cJSON_Print(root); printf("before modify:%s\n",out); free(out); basicpara = cJSON_GetObjectItem(root,"basicparameter"); cJSON_GetObjectItem(basicpara,"mode")->valueint = 0; //cJSON_GetObjectItem(basicpara,"mode")->valuedouble = 0; cJSON_GetObjectItem(basicpara,"TimeoutPoweron")->valueint = 10; //cJSON_GetObjectItem(basicpara,"TimeoutPoweron")->valuedouble = 10; out = cJSON_Print(root); printf("after modify:%s\n",out); free(out); //write_file("basicparameter.cfg",out); cJSON_Delete(root); return 0; }
刚开始只修改了valueint的值,结果显示修改前后的结果一样。
cJSON_GetObjectItem(basicpara,"mode")->valueint = 0;
然后修改valuedouble的值,才能真能修改json文件。
如果只调用
cJSON_GetObjectItem(basicpara,"mode")->valuedouble = 0;也只是修改了valuedouble的值。
所以如果想要修改valueint的值必须同时调用
cJSON_GetObjectItem(basicpara,"mode")->valueint = 0; cJSON_GetObjectItem(basicpara,"mode")->valuedouble = 0;
引用链接:https://sourceforge.net/p/cjson/discussion/998970/thread/5c13b93f/
相关文章推荐
- JS 交互
- 使用JSONP解决Ajax跨域访问问题
- angular js中option绑定
- javascript转义字符的问题
- JavaScript中变量的浅析
- 用js实现跑马灯抽奖效果
- com.google.gson.JsonSyntaxException: 4.1.9
- JSP中播放提示声音
- jsp页面的js定时器的实现和关闭(不跳转页面)
- 使用Javascript实现客户端数据验证
- 7.2 Javascript:表单验证-提交表单
- 一个简单的ajax+servlert+jsp的完整实例
- JavaScript 弱类型浅谈
- ie7,ie8 js中变量名和页面元素ID重名,报错
- Json解析简单数据<二>
- JavaScript 闭包浅谈
- JSP生成验证码
- 使用JS制作弹出框的几个小问题
- 使用Gson解析json
- js实现图片预显示