当前位置: 首页 > news >正文

Linux C中对json格式数组数据的生成与解析

在网络通信中,数据经常被做成json格式的来进行传输。那么我们怎么在linux系统中去做json格式的数据呢?怎么将接收到的json格式的数据解析出来呢?

1、linux json库的安装

(1)下载json-c源码包

(2)解压json-c的源码包

Tar -xvf json-c-0.10.tar.gz

(3)配置成X86平台json包

./configure --prefix=/usr

(4)编译

Make

(5)安装

Sudo make install

2、json库中常用的函数接口

----------------生成json格式的数据常用函数接口-----------------

(1)创建一个空的json对象

Struct json_object *obj = json_object_new_object();

(2)以key-value的形式添加json对象的成员

Value值是int类型:key值是“temp”,value值是20

json_object_object_add(obj,temp”,json_object_new_int(20));

Value值是string类型:key值是“name”,value值是”mm”

json_object_object_add(obj,name”,json_object_new_string(“mm”));

(3)将json对象内容,转成json格式的字符串

Unsigned char *json_string = json_object_to_json_string(obj);

--------------解析json格式的数据常用函数接口------------------

(1)将json格式的字符串转成json对象

Struct json_object new_obj = json_tokener_parse(json_string);

(2)根据指定对象的成员名,获取这个成员对象的json对象

Struct json_object *object = json_object_object_get(new_object);

(3)根据key值取得相应的value值

Value值为int:

Json_object_get_int(object);

Value值为string:

Json_object_get_string(object);

3、对于比较简单的json格式的数据,我们用到上面的函数接口就可以完成json格式数据的制作和解析。

4、假如碰到比较复杂的json数组格式的数据,我们又该怎么去制作和解析呢?

示例说明:{

"jporder":

[

{ "jdevice": 1, "jppaynum": 1 },

{ "jdevice": 2, "jppaynum": 2 }

]

}

分析该数据的组成:

1、key值为”jporder”,与其相对应的value值是一个数组[ { "jdevice": 1, "jppaynum": 1 }, { "jdevice": 2, "jppaynum": 2 } ]

2、数组的每个成员都是两对json对象

数组成员1:{ "jdevice": 1, "jppaynum": 1 }

数组成员2:{ "jdevice": 2, "jppaynum": 2 }

3、每个json对象都是由key_value组成

具体的数据生成和解析方法如下:

数据生成部分:

数据解析部分:

运行结果如下:

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

相关文章:

  • [剑指 Offer 62]圆圈中最后剩下的数字(约瑟夫环问题:动态规划)
  • Qt报错总结
  • 精品基于JAVA的医院挂号系统的设计与实现SSM
  • GAN生成漫画脸
  • RabbitMQ如何确保消息发送 ? 消息接收?
  • 「Redis」01 NoSQL及Redis概述
  • 数商云SCM管理系统库存管理功能助力新能源汽车企业仓储管理更高效
  • Word控件Spire.Doc 【图像形状】教程(8): 如何借助C#/VB.NET在 Word 中插入艺术字
  • 【Linux】shell命令行简单解释器
  • 融合多策略的萤火虫算法求解多目标优化问题(Matlab代码实现)
  • MacBook Pro 耗电严重的终极解决办法2022年
  • uni-fab彩色图标按钮
  • [附源码]Python计算机毕业设计Django的在线作业批改系统
  • TypeScript入坑
  • eMagin:当月产百万片时,4K MicroOLED成本将不是问题
  • [附源码]Python计算机毕业设计SSM乐多多宠物店网站(程序+LW)
  • JUC系列(五) 读写锁与阻塞队列
  • 2022最新iOS最新打包发布流程
  • 【Android进阶之旅】内存泄漏的危害有哪些?(案例分析)
  • 力扣(LeetCode)895. 最大频率栈(C++)
  • 可重入 (Reentrancy) 和 线程安全 (Thread-Safe)
  • D3D中设备丢失的处理
  • linux shell awk获得外部变量(变量传值)简介
  • ORCLE用户密码过期的处理
  • 发发感慨……
  • 虚拟内存、逻辑地址、线性地址、物理地址
  • Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL
  • 工作理念(走与不走之间)
  • Linux shell awk 流程控制语句(if,for,while,do)详细介绍
  • C系语言出身的程序员学习bash编程