这里主要介绍的是怎样通过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 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_MAPend_map(&yajlinfo);
#elseend_array(&yajlinfo);
#endif//这里是获取已经生成好的json语句,保存在buf中,长度保存在buflen中yajl_gen_get_buf(yajlinfo.gen, &buf, &buflen);printf("%s\n", buf);yajl_free(&yajlinfo);return 0;

通过YAJL生成json语句相关推荐

  1. linux c 解析生成json(jansson安装和使用)

    Jansson是用于编码,解码和生成JSON数据的C语言库.它的特性: 简单直观的API和数据模型 全面的文档 不依赖其他库 全面支持Unicode(UTF-8) 大量测试套件 0.下载jansson ...

  2. java 前端页面调用数据库_java如何生成json被前端调用

    小妹前端一枚,CSDN新人,分不多,请见谅. 现在在自学前后台交互. 现在采用的是ajax调用的方法,json文件是自己写的假数据. $.ajax({ url:"json/mood.json ...

  3. 在线MySQL,SQL Server建表语句生成JSON测试数据工具

    在线MySQL,SQL Server建表语句生成JSON测试数据工具 在线MySQL,SQL Server建表语句生成JSON测试数据工具 本工具可以将SQL建表语句生成JSON测试数据,支持MySQ ...

  4. 码匠 × OpenAI :快速生成 SQL 语句,提升开发效率!

    目录 使用 OpenAI 生成 SQL 码匠连接与集成 OpenAI 总结 关于码匠 在码匠中,编写 SQL 语句,并结合码匠一系列开箱即用的组件实现复杂的业务逻辑,是很常见的应用开发场景.然而,不同 ...

  5. 把对像生成json并存储到文件

    1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField;import java.util.Date;public class Stu ...

  6. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)

    1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...

  7. 将表里的数据批量生成INSERT语句的存储过程 增强版

    原文:将表里的数据批量生成INSERT语句的存储过程 增强版 将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的 ...

  8. 将表里的数据批量生成INSERT语句的存储过程 继续增强版

    文章继续 桦仔兄的文章 将表里的数据批量生成INSERT语句的存储过程 增强版 继续增强... 本来打算将该内容回复于桦仔兄的文章的下面的,但是不知为何博客园就是不让提交!.... 所以在这里贴出来吧 ...

  9. 解放程序员双手!GPT-3自动生成SQL语句 | 代码开源

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI "无所不能"的GPT-3,现在又来解放程序员们的双手了. 像这样,只需用简单的英文问下GPT-3"上个月注册了 ...

  10. 用一个类根据Model属性生成SQL语句

    想到写这个的原因是我和我的一个朋友在写一个开源项目的时候,我负责了数据库的持久化存储部分,结果他看到了我的数据库数据存储结构之后直接傻眼了,因为个人比较简单粗暴,直接把一个数据Model归档成为二进制 ...

最新文章

  1. sublime text3 添加到右键菜单
  2. java线程中的常用方法_[多线程] 线程中的常用方法-最详细
  3. C# 中的 lock的陷阱
  4. 工作190:页面数据不显示
  5. bzoj 4247: 挂饰(DP)
  6. Centos 5.6 安装subversion总结
  7. 华为智慧屏 鸿蒙如何获得,荣耀智慧屏得鸿蒙助力,玩法超多
  8. JAVA的引用类型变量(C/C++中叫指针)
  9. c语言万能源代码,经典C语言源代码
  10. 厉害!一流大学本科生,获42万奖学金!
  11. windows-xp桌面图标有蓝底怎么去掉:电脑桌面图标有蓝色阴影的解决办法
  12. php 页面日历形式显示,日历页面展示-PHP制作阴阳历转换的日历插件-PHP中文网教程...
  13. mongoDB——readwrite操作
  14. smartbi服务器缓存文件,Smartbi Config页面介绍 - Smartbi V9 帮助文档
  15. EXCEL表格如何实现隔行填充颜色
  16. 常见的电子器件,这篇文章总结得很到位,你还不收藏吗?
  17. ESP8266 WIFI 模块串口调试过程-实现通过互联网实现数据远程传输(结尾含驱动代码链接)
  18. CH344是一款USB总线的转接芯片
  19. 有关于中通公司需要提交的面试题答案
  20. FANUC数控系统类有哪些最新发表的毕业论文呢?

热门文章

  1. Splash特征描述子
  2. thinkphp实现文件上传
  3. A*算法 带cocos2d-x例子 a*寻路算法
  4. SKNode的子类和常用的Action
  5. Android LBS系列06 位置策略(二)模拟位置数据的方法
  6. Oracle物化视图的一般使用【转】
  7. Markdown 表格
  8. AWS免费云服务套餐申请步骤及常见问题
  9. VB.net取整和模操作
  10. 拆分php中 $i++ ++$i PHP中的i++与++i的区别及效率