cJson 创建 读取
关于c语言操作json,cjson还挺好用,许多操作已经帮开发员封装好了,使用起来很方便。资源下载地址为:http://sourceforge.net/projects/cjson/
在test.c文件中已经有很多例子,看了还不会使用可以直接看cjson.c文件,也不深奥,实际上就是个双链表,然后是对这个双链表进行增删改查
记录下这两天运用到的
现有一个json文件如下:
[
{
"id": "c1",
"option": "install",
"fid": "1"},
{
"id": "p1",
"option": "notinstall",
"fid": "2"
}
]
1. 读取一个json文件,返回json结构链表,注意,这里返回值必须为cJSON*,具体原因看上一篇文章。另外关于json的介绍看,http://www.json.org/json-zh.html
cJSON* GetJsonObject(char* fileName, cJSON* json)
{
long len;
char* pContent;
int tmp;
FILE* fp = Open_File(fileName, "rb+");
if(!fp)
{
return NULL;
}
fseek(fp,0,SEEK_END);
len=ftell(fp);
if(0 == len)
{
return NULL;
}
fseek(fp,0,SEEK_SET);
pContent = (char*) malloc (sizeof(char)*len);
tmp = fread(pContent,1,len,fp);
Close_File(fp);
json=cJSON_Parse(pContent);
if (!json)
{
return NULL;
}
free(pContent);
return json;
}
2 读取cJSON索引为index的结点某个key值对应的value,索引从0开始
BOOL GetValueString(cJSON* json,int id, char* name, char* param)
{
cJSON* node;
node = cJSON_GetArrayItem(json,id);
if(!node)
{
return FALSE;
}
sprintf(param, "%s", cJSON_GetObjectItem(node, name)->valuestring);
return TRUE;
}
比如读取id=1,name="name",得到param为"notinstall"
3 生成json文件
void Create_Pkgs(char* option1, char* option2)
{
cJSON *root,*fld;
char *out;
FILE* fp = Open_File(Pkgs_File, "w+");
root=cJSON_CreateArray();
cJSON_AddItemToArray(root,fld=cJSON_CreateObject());
cJSON_AddStringToObject(fld, "id", "c1");
cJSON_AddStringToObject(fld, "option", option1);
cJSON_AddStringToObject(fld, "fid", "1");
cJSON_AddItemToArray(root,fld=cJSON_CreateObject());
cJSON_AddStringToObject(fld, "id", "p1");
cJSON_AddStringToObject(fld, "option", option2);
cJSON_AddStringToObject(fld, "fid", "2");
out=cJSON_Print(root);
fprintf(fp, out);
Close_File(fp);
cJSON_Delete(root);
free(out);
out = NULL;
root = NULL;
}
cJson 创建 读取的更多相关文章
- js cookie创建读取删除函数封装
js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...
- 一个可创建读取日志的管理类(可固定创建2M大小的日志文件)
这里,将日志管理基类命名为LogManagerBase(抽象类),具体的不同类型的日志可以通过继承完成.该基类可将日志以每个2M的方式存储起来,并可以读取当前正在使用的日志的所有内容. 要实现该基类, ...
- php创建读取 word.doc文档
创建文档; <?php $html = "this is question"; for($i=1;$i<=3;$i++){ $word = new word(); $w ...
- 在.NET中使用iTextSharp创建/读取PDF报告: Part I [翻译]
原文地址:Create/Read Advance PDF Report using iTextSharp in C# .NET: Part I By Debopam Pal, 27 Nov 20 ...
- c#使用DotNetZip封装类操作zip文件(创建/读取/更新)实例
DotnetZip是一个开源类库,支持.NET的任何语言,可很方便的创建,读取,和更新zip文件.而且还可以使用在.NETCompact Framework中. 下载地址在这里:http://dot ...
- C# 创建 读取 更新 XML文件
public static class XmlHelper { /// <summary> /// 读取节点值 /// </summary> /// <param nam ...
- 创建/读取/删除Session对象
//创建Session对象 Session["userName"] = "顾德博";//保存,这里可以存储任意类型的数据,包括对象.集合等 Session.Ti ...
- 10.ODBC创建/读取Excel QT4
看到一篇MFC的参考链接:https://blog.csdn.net/u012319493/article/details/50561046 改用QT的函数即可 创建Excel //创建Excel v ...
- JavaScript创建读取cookie代码示例【附:跨域cookie解决办法】
使用JavaScript 原生存取cookie代码示例: var cookie = { set : function(name, value, expires, path, domain, secur ...
随机推荐
- [mobile angular ui 1.2]桌面环境下如何自动隐藏左侧的sidebar?how to hide left sidebar on desktop browser by default?
使用mobile angular ui 1.2开发,在默认情况下,桌面浏览器中sidebar-left是默认打开的,怎么才能在程序初始打开时关闭sidebar-left呢? 目前我找到的唯一可行办法就 ...
- 【Dynamic Programming】DP算法
http://www.hawstein.com/posts/dp-novice-to-advanced.html
- 自动换行后缩进怎么做(CSS)?(可用于 Li y 元素的排版)
<style type="text/css">li{ width:100px; border:1px solid #ccc; padding-left:25px; te ...
- JVM垃圾回收机制之引用类型
一:引用的类型 javac编译器编译源文件后,生成字节码文件,在类加载器加载字节码文件到内存中时,在内存中开辟 空间,栈.堆以及方法区,来存放对象以及引用.引用可以分为四种: 强引用:平常我们在编写程 ...
- phpcms v9 添加内容出现500错误
今天开发好一个网站,上传网站后,不知道安装的时候要求fsockopen()函数打开,我直接跳过安装完成的,所以搞得后面出错了,我一直以为这个问题,今天花了一天的时间找资料,测试,终于知道什么原因了,其 ...
- vim中文手册
http://vimcdoc.sourceforge.net/doc/help.html
- c# 通过.net自带的chart控件绘制饼图pie chart
c# 通过.net自带的chart控件绘制饼图pie chart 需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: > ...
- iOS开发 frame 与 bounds 的区别与关系 转自隔叶黄莺
frame和bounds是UIView中的两个属性(property). frame指的是:该view在父view坐标系统中的位置和大小.(参照点是父亲的坐标系统) bounds指的是:该view在本 ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...
- bat批处理设置静态、动态、ping、查看网络配置
@echo off :startIP set /p source=S or D or C or P or E: echo source:%source% if /i "%source%&qu ...