json区分整数和浮点数_json爬坑2:yajl构造json

本文介绍了如何使用C语言的yajl库来构造JSON字符串。在处理从Kafka接收并解析后的PB数据,以及生成上报安全事件的JSON格式数据时,作者选择了yajl库,因为该库在已有项目中有使用。文中提到了设置JSON字段的C接口,包括整数、浮点数、字符串、空值、布尔、字典和数组等类型,但具体代码未给出,建议读者自行搜索学习。
摘要由CSDN通过智能技术生成

ddb0fe01794940e5533d63dc5ca1ebdb.png

用C语言yajl json库实现,构造一个json字符串。和前一篇文章(ailx10:json爬坑1:yajl解析json)正好是一个对立的操作,上一个是获得json数据,这一个是设置json数据[1]。之所以,写这个呢,是因为当时刚刚从安全云来到态势感知,领导分给我的一个独立任务,就是自己用C或者C++写一个大数据UEBA异常流量检测和分析模块。刚刚去一个星期,就要独立开发项目,啥都不懂,只能一个模块一个模块的吃,然后再想办法,把所有模块连贯起来。

一般我们从kafka直接接收到数据,解析PB就得到了Json格式的文件,然后我们处理这批数据。处理完之后,我们要上报安全事件,这里就需要将数据在组装成Json格式,然后写到Kafka中,所以我调研了一下C语言如何写Json。

但是为什么要选择yajl呢,实际上有很多选择,但是当时我咨询了一个安全云的大牛,他说咱们开发的WAF里面用的是yajl这个库,于是我就自己研究了一下,就是这样的~

我下载了yajl的库,然后编译,这里采用静态链接库编译,就得到了可执行程序,感觉还可以,最后我就用到了代码里。

gcc myjsonn.c ../build/yajl-2.1.1/lib/libyajl_s.a

b7d0c16e2a6e9bc5477c6a2753e0daa9.png

设置JSON字段的C接口,这些都是YAJL_API官方库统一的,没啥好说的。

  • 整数
  • 浮点数
  • 字符串
  • 空值
  • 布尔
  • 字典
  • 数组
YAJL_API yajl_gen_status yajl_gen_integer(yajl_gen hand, long long int number);
YAJL_API yajl_gen_status yajl_gen_double(yajl_gen hand, double number);
YAJL_API yajl_gen_status yajl_gen_number(yajl_gen hand,const char * num,size_t len);
YAJL_API yajl_gen_status yajl_gen_string(yajl_gen hand,const unsigned char * str,size_t len);
YAJL_API yajl_gen_status yajl_gen_null(yajl_gen hand);
YAJL_API yajl_gen_status yajl_gen_bool(yajl_gen hand, int boolean);
YAJL_API yajl_gen_status yajl_gen_map_open(yajl_gen hand);
YAJL_API yajl_gen_status yajl_gen_map_close(yajl_gen hand);
YAJL_API yajl_gen_status yajl_gen_array_open(yajl_gen hand);
YAJL_API yajl_gen_status yajl_gen_array_close(yajl_gen hand);
  • 代码删掉了,自己百度去吧
  • 代码删掉了,自己百度去吧
  • 代码删掉了,自己百度去吧

参考

  1. ^yajl构造json https://blog.csdn.net/kyle__shaw/article/details/36442141
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值