博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过YAJL生成json语句
阅读量:5228 次
发布时间:2019-06-14

本文共 2845 字,大约阅读时间需要 9 分钟。

这里主要介绍的是怎样通过yajl生成一个json语句。方法通过代码就能够非常清楚的看到了,只是这里仅仅加入了字符串。

假设须要加入其它类型的,能够查考的手冊,调用其它函数进行加入。

/* * 这个文件主要展示怎样通过yajl生成json语句。 * 这里不包括解析的部分,仅仅包括了最简单的构造部分。 */#include 
#include
#include
#include
//#define USE_MAP 1#define BEAUTIFY_OUTPUT 1typedef struct yajl_info_t{ int depth; yajl_gen gen; //保存一个generator} yajl_info;/* * begin_map和end_map会生成一个对象 * 在它们直接插入数据的话,会变成对象中的键/值对 */yajl_gen_status begin_map(void *ctx){ yajl_info *info = (yajl_info *)ctx; yajl_gen_status __stat = yajl_gen_map_open(info->gen); if (__stat == yajl_gen_status_ok) { info->depth++ ; } else { printf("yajl_gen_map_open failed\n"); } return __stat;}/* * begin_map和end_map会生成一个数组 * 在它们直接插入数据的话,会变成数组中的内存 */yajl_gen_status begin_array(void *ctx){ yajl_info *info = (yajl_info *)ctx; yajl_gen_status __stat = yajl_gen_array_open(info->gen); if (__stat == yajl_gen_status_ok) { info->depth++; } else { printf("yajl_gen_array_open failed\n"); } return __stat;}yajl_gen_status end_array(void *ctx){ yajl_info *info = (yajl_info *)ctx; yajl_gen_status __stat = yajl_gen_array_close(info->gen); if (__stat == yajl_gen_status_ok) { info->depth--; } return __stat;}int yajl_init(yajl_info *info) { info->depth = 0; info->gen = yajl_gen_alloc(NULL);#ifdef BEAUTIFY_OUTPUT //设置输出格式 yajl_gen_config(info->gen, yajl_gen_beautify, 1);#endif}int yajl_free(yajl_info *info) { info->depth = 0; yajl_gen_free(info->gen);}int main(int argc, char **argv){ yajl_info yajlinfo; yajl_init (&yajlinfo); const unsigned char* buf; size_t buflen; int i;#ifdef USE_MAP //创建一个对象 begin_map(&yajlinfo);#else //创建一个数组 begin_array(&yajlinfo);#endif //往对象/数组中插入数据 unsigned char *key = "scutech"; unsigned char *value = "dingjia"; int keylen = strlen(key); int valuelen = strlen(value); yajl_gen_string(yajlinfo.gen, (const unsigned char*)key, keylen); yajl_gen_string(yajlinfo.gen, (const unsigned char*)value, valuelen); for(i=1;i<5;i++) { unsigned char key1[50]; unsigned char value1[50]; sprintf(key1, "scutech%d", i); sprintf(value1, "dingjia%d", i); int keylen1 = strlen(key1); int valuelen1 = strlen(value1); //往对象中插入数据 begin_map(&yajlinfo); yajl_gen_string(yajlinfo.gen, (const unsigned char*)key1, keylen1); yajl_gen_string(yajlinfo.gen, (const unsigned char*)value1, valuelen1); end_map(&yajlinfo); }#ifdef USE_MAP end_map(&yajlinfo);#else end_array(&yajlinfo);#endif //这里是获取已经生成好的json语句,保存在buf中,长度保存在buflen中 yajl_gen_get_buf(yajlinfo.gen, &buf, &buflen); printf("%s\n", buf); yajl_free(&yajlinfo); return 0;

转载于:https://www.cnblogs.com/zfyouxi/p/4245976.html

你可能感兴趣的文章
Thinkphp框架感悟(二)
查看>>
Flink – SlotSharingGroup
查看>>
根据旋转前后的向量值求旋转矩阵
查看>>
MC新手入门(十六)------ 按键操作
查看>>
搭建Java开发环境
查看>>
使Web Api 支持跨域资源共享(CORS)
查看>>
字符数组
查看>>
1 Ionic和Hybird应用介绍
查看>>
0329note:UIScrollView
查看>>
机器学习面试问题
查看>>
自定义标签 (Taglib) 续二
查看>>
linux的YUM和RPM
查看>>
标准盒子模型
查看>>
二手房的坑
查看>>
JS数组方法与python列表方法的比较
查看>>
SVN安装与配置
查看>>
空间不支持openssl解决办法
查看>>
MySql常用 join 详解
查看>>
fetch跨域问题
查看>>
exports 和 module.exports
查看>>