JSON 下 -- jansson 示例

JSON 下 —— jansson 示例

参考网址:

jansson 库的下载:

http://www.digip.org/jansson/

安装jansson 步骤:

http://blog.csdn.net/lz909/article/details/46042979

jansson 手册:

https://jansson.readthedocs.io/en/latest/index.html

API 介绍:

http://jansson.readthedocs.io/en/2.2/apiref.html#json_error_t

vim source.c

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<jansson.h>
  4
  5 #define FILE_PATH         "./temp.txt"
  6 #define MAX_NUM            5
  7
  8 typedef struct _JSON_ITEM_INFO
  9 {
 10     json_t* string;
 11     json_t* value;
 12 }JSON_ITEM_INFO;
 13
 14
 15 void save_info_to_file()
 16 {
 17    json_t* root = NULL;
 18    json_t* item_1 = NULL;
 19    json_t* item_2 = NULL;
 20    json_t* item_3 = NULL;
 21    json_t* array = NULL;
 22
 23    char* s_repon = NULL;
 24
 25    root = json_object();
 26    item_1 = json_object();
 27    item_2 = json_object();
 28    item_3 = json_object();
 29    array = json_array();
 30
 31    json_object_set_new(item_1,"name",json_string("xiaopeng"));
 32    json_object_set_new(item_1,"age",json_integer(12));
 33    json_array_append_new(array,item_1);
 34
 35    json_object_set_new(item_2,"name",json_string("xiaoming"));
 36    json_object_set_new(item_2,"age",json_integer(8));
 37    json_array_append_new(array,item_2);
 38
 39    json_object_set_new(item_3,"name",json_string("xiaohong"));
 40    json_object_set_new(item_3,"age",json_integer(22));
 41    json_array_append_new(array,item_3);
 42
 43    json_object_set_new(root,"root",array);
 44
 45    json_dump_file(root, FILE_PATH,JSON_PRESERVE_ORDER);
 46
 47    s_repon = json_dumps(root,JSON_INDENT(0));
 48
 49    printf("s_repon = %s \n",s_repon);
 50    free(s_repon);
 51
 52    printf("size = %d \n", (int)json_array_size(array));
 53
 54    if(root)
 55    {
 56       json_delete(root);
 57    }
 58    if(array)
 59    {
 60       json_delete(array);
 61    }
 62 }
 63
 64 void get_file_info()
 65 {
 66    int i = 0;
 67
 68    json_t* root = NULL;
 69    json_t* array = NULL;
 70    json_error_t error;
 71    char* s_repon = NULL;
 72
 73    json_t* add_item_1 = NULL;
 74    char* s_get_add_item = NULL;
 75
 76    json_t* rec_table[MAX_NUM] = {0};
 77
 78    JSON_ITEM_INFO person[MAX_NUM];
 79    memset(person,0,sizeof(person));
 80
 81    //get the info from file;
 82    root = json_load_file(FILE_PATH, 0, &error);
 83    if(!json_is_object(root))
 84    {
 85         printf("%s,%d\n",__FILE__,__LINE__);
 86    }
 87    s_repon = json_dumps(root,JSON_INDENT(0));
 88    printf("s_repon = %s \n",s_repon);
 89    free(s_repon);
 90
 91    array = json_object_get(root,"root");
 92    if(!json_is_array(array))
 93    {
 94         printf("%s,%d\n",__FILE__,__LINE__);
 95    }
 96
 97    for(i = 0; i < MAX_NUM ;i++)
 98    {
 99        rec_table[i] = json_array_get(array,i);
100        if(!json_is_object(rec_table[i]))
101        {
102             printf("%s,%d\n",__FILE__,__LINE__);
103        }
104        person[i].string = json_object_get(rec_table[i],"name");
105        printf("person[%d].string = %s \n",i,json_string_value(person[i].string));
106        person[i].value = json_object_get(rec_table[i],"age");
107        printf("person[%d].value = %d \n",i,(int)json_integer_value(person[i].value));
108    }
109
110     //add the new item;
111     add_item_1 = json_object();
112     json_object_set_new(add_item_1,"name",json_string("zhangsan"));
113     json_object_set_new(add_item_1,"age",json_integer(30));
114
115    if(json_array_size(array) >= MAX_NUM)
116    {
117         //remove the top item;
118         json_array_remove(array,0);
119
120    }
121     json_array_append_new(array,add_item_1);
122
123     //write the new array to the file;
124     json_dump_file(root, FILE_PATH,JSON_PRESERVE_ORDER);
125
126     //dump the date and print
127     s_get_add_item = json_dumps(root,JSON_INDENT(0));
128
129     printf("s_get_add_item = %s \n",s_get_add_item);
130     free(s_get_add_item);
131
132 }
133
134 int main()
135 {
136     save_info_to_file(); //这里将数据保存在文件 FILE_PATH 里;
137     get_file_info();     // 这里将文件 FILE_PATH 数据读取出来;
138
139     return 0;
140 }

编译:

gcc source.c -ljansson

执行结果:

有什么错漏,欢迎指出!!!

时间: 2024-10-13 16:18:47

JSON 下 -- jansson 示例的相关文章

linux 下jansson安装和使用

1.安装jansson ./configure Make Make install 2.生成帮助文档 Cd doc Make html 编译安装doc时提示 spinx-build not a command 执行下面语句安装sphinx easy_install -U Sphinx 生成_build文件夹 Cd _build/html/ 使用火狐浏览器启动帮助文档 Firefox index.html 3.编程 包含头文件: #include <jansson.h> 编译连接时加库 -lja

润乾集算报表使用json数据源的示例

JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见.润乾集算报表可以很好支持json数据源,这里通过实例说明. 示例一 报表说明 学生成绩在应用中以json文件存在,现需要汇总学生成绩,并按总成绩排名,结果以报表展现.报表样式如下: JSON文件中包含班级.编号.姓名.学科.成绩等信息,格式如下: [ { "class": "Class one", "id": 1, "name": &

JSON下

JSON下:目录一:把 JSON 文本转换为 JavaScript 对象二:JSON 实例 - 来自字符串的对象 一.把 JSON 文本转换为 JavaScript 对象JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据. 为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件). 二.JSON 实例 - 来自字符串的对象创建包含 JSON 语法的

python中json的操作示例

先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="admin" j["realName"]="管理员" j["cookie"]="afasfasfasdfasdfasf" print json.dumps(j, ensure_ascii=False, indent=4)

Jackson序列化和反序列化Json数据完整示例

Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会出现各种类库,框架以及工具来解决这些基础的问题,Jackson就是这些工具中的一个,使用这个工具开发者完全可以从手工结束Json数据的重复劳动中解放出来.使用Jackson首先需要下载相应的类库,如下的Maven dependency列出了完整的POM dependency. 1 <dependen

一个AJAX的请求。讲诉Json的使用示例

mvc使用JsonResult返回Json数据 <控制器> using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Configuration; using System.Data.SqlClient; using System.Data; using JSON.Models; namespace JSON.Co

nodejs - json序列化&amp;反序列化示例

1 // demo-json.js 2 var obj = { 3 "name": "LiLi", 4 "age": 22, 5 "sex": "F" 6 }; 7 8 var str = JSON.stringify(obj); 9 console.log(str); 10 11 var obj2 = JSON.parse(str); 12 console.log(obj2); json序列化最终结果是字

Django返回json数据用法示例

最近在写前端ajax发送请求到后台,结果数据提交成功,但是一直未执行成功回调函数,经过多番查找资料,终于找到答案. 本文实例讲述了Django返回json数据用法.分享给大家供大家参考,具体如下: 1.前端.jQuery发送GET请求,并解析json数据.getJSON方法可参考这里. ? 1 2 3 4 5 url = "http://example/?question=" + question + "&rand=" + Math.random(); $.

easyUI这样获取Json的内嵌数据 显示json下的json

先给出返回的json数据. { "total": "2", "rows": [ { "id": "1", "name": "张富银", "xiuhao": "2014009012", "exttend": { "sid": "1", "tid": &