分类: c语言 |
关于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;
}
在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)
{
}
2 读取 cJSON索引为index的结点某个key值对应的value,索引从0开始
BOOL GetValueString( cJSON* json,int id, char* name, char* param)
{
}
比如读取id=1,name="name",得到param为"notinstall"
3 生成json文件
void Create_Pkgs(char* option1, char* option2)
{
}