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 ...
随机推荐
- XML 中可嵌入 cmd命令脚本
原文要参照代码 1. XML解析 Task逻辑块可相互组合,形成复杂的树状结构,其结构用XML表示,即写成XML文件的形式. 样例如下: <!-- 顺序执行块 --> <seq> ...
- 编写高质量代码_改善C++程序的150个建议 读书笔记
这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的 ...
- flex中的注释
flex 2.5.35论文写到此处,遇到点麻烦,随手翻了本书,说下flex中的注释问题.中文版的35页有点问题,所以纠正下. 下面是p31示例 fb2_2.l /* 读取多个文件 */ %option ...
- win8 关闭防火墙
http://jingyan.baidu.com/article/b87fe19eddb4da5218356894.html
- Windows上使用sqlite3
安装 去官网http://www.sqlite.org/download.html下载Windows下安装包,下载后,解压,设置环境变量 例如放在D:\sqlite3下,将D:\sqlite3加入环境 ...
- OpenLayers 比较有用的对象和属性
1.ol.interaction.Pointer 是管理地图down.move.up事件的基类,也用于管理地图拖拽事件. 构造函数结构如下: new ol.interaction.Po ...
- opencv获取IP摄像头(IP-camera)实时视频流
之前这篇文章讲了如何通过网络摄像头(web camera)获取实时视频流,但是这种方法的缺陷就是摄像头和主机必须连在一起,那这种在室外部署的时候就会非常麻烦并且不安全,所以后来找了下用海康威视或者大华 ...
- PHP 使用memcached
1.添加扩展包 php_memcache.dll 2.在PHP.INI添加 extension=php_memcache.dll 3.程序 <?php //创建一个mem对象实例 $mem=ne ...
- python--模块--10
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ Python 模块 Python 模块(Module),是一个 Python 文件,以 .py ...
- Android图片处理(Matrix,ColorMatrix) - 转载
Android图片处理(Matrix,ColorMatrix) 转载自:http://www.cnblogs.com/leon19870907/articles/1978065.html 在编程中有时 ...