首页 > 代码库 > 通过YAJL生成json语句
通过YAJL生成json语句
这里主要介绍的是如何通过yajl生成一个json语句。方法通过代码就可以很清楚的看到了,不过这里只添加了字符串。
如果需要添加其他类型的,可以查考yajl的手册,调用其他函数进行添加。
/* * 这个文件主要展示如何通过yajl生成json语句。 * 这里不包括解析的部分,只包含了最简单的构造部分。 */ #include <yajl/yajl_gen.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //#define USE_MAP 1 #define BEAUTIFY_OUTPUT 1 typedef 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 = http://www.mamicode.com/"dingjia";>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。