cJSON库描述

CJSON是一个用于解析JSON包的C语言库,库文件为cJSON.c和cJSON.h, 所有的实现都在这两个文件中。原作者的地址cJSON。

JSON包的解析

例如有一个JSON的数据包如下:

{

"rxpk": [

{

"tmst": 1868500100,

"time": "2016-07-07T13:20:40.003906Z",

"chan": 1,

"rfch": 0,

"freq": 779.7,

"stat": 1,

"modu": "LORA",

"datr": "SF9BW125",

"codr": "4/5",

"lsnr": 9.8,

"rssi": -37,

"size": 83,

"data": "QH/4iimAKgACB0KHP8e0IgQAhI0bBi9bvFfb8jHeSWEAhpnsCGHwt9pUCvrRMazQRBtN+kh3Ge5hFL8jUtHpk3luFtcTLlgGVMPSBLpSp8h6C44="

}

]

}

我们需要获取其中的data字段,需要进行的过程如下:

首先声明变量 cJSON *json;

cJSON *rxpk;

cJSON *arr0;

cJSON *data;

将上述的字符串进行解析,并保存在json中;

获取json其中的rxpk字段的内容,并保存在rxpk中;

获取rxpk中的arr部分,拿出一种的第一个数组,并保存在arr0;

获取arr0的data部分,并保存在data;

使用data->valuestring即可获取其中的data字段的内容 具体的代码实现如下所示: uint16_t rxpk_data_get(char* text,char* dest_str)

{

uint16_t len = 0;

cJSON *json;

cJSON *data;

cJSON *arr0;

cJSON *rxpk;

json= cJSON_Parse(text);

if(!json)//对JSON包进行合法性检查

return 0;

rxpk = cJSON_GetObjectItem(json,"rxpk");

if(!rxpk)//对rxpk进行合法性检查

return 0;

arr0 = cJSON_GetArrayItem(rxpk,0);

if(!arr0)//对arr0进行合法性检查

return 0;

data =cJSON_GetObjectItem(arr0,"data");

if(!data)//对data进行合法性检查

return 0;

len = strlen(data->valuestring);

memcpy(dest_str,data->valuestring,len);

dest_str[len] = 0;

return len;

}

在json包中遇到数组时

/* Returns the number of items in an array (or object). */

extern int cJSON_GetArraySize(cJSON *array);

这个函数可以获取数组的长度。

c java json_cJSON_json包的C语言解析库相关推荐

  1. 下载Java Jar包的网站(托管厂库)

    进本上用的到的JAR到这里搜索都能找到并下载 网址 : https://mvnrepository.com/ 提示 : 配合迅雷托管浏览器下载更好哦 (个人感觉比特彗星也就一般般,和迅雷没啥区别,而且 ...

  2. java xml开源操作类,xml解析和操作的开源工具项目涵盖java c++ php 等语言

    XML解析器-Xerces    XML操作库-dom4j    XML文档解析器-Digester    J2ME-的XML-解析器-kXML XML解析类库-MXP1    XML解析器-LibX ...

  3. java支持库 易语言_易语言支持库|易语言支持库更新集合包下载233个 - 欧普软件下载...

    易语言支持库更新集合包是目前比较齐全的集合包,包含233个,有EXCEL2000支持库2.0.Java支持库2.0.PowerPoint2000支持库2.0.DirectX2D支持库2.0.位图操作支 ...

  4. mysql解释器_atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  5. python手册中文版apk-Go、Python 语言解析安卓 APK 包

    Go语言解析APK Github上有一个非常棒的Go语言的库 https://github.com/shogo82148/androidbinary 虽然Star数量有点少,不过代码质量高的惊人.维护 ...

  6. Java源码解析——Java IO包

    一.基础知识: 1. Java IO一般包含两个部分:1)java.io包中阻塞型IO:2)java.nio包中的非阻塞型IO,通常称为New IO.这里只考虑到java.io包中堵塞型IO: 2. ...

  7. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法

    在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...

  8. 小白自学Java框架,框架的全面解析总结

    springmvc工作机制(原理) DispatcherServlet主要用作职责调度工作,本身主要用于控制流程 1.springmvc将所有的请求都提交给DispatcherServlet,它会委托 ...

  9. Java多线程之CAS深入解析

    Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...

最新文章

  1. 结构体成员地址获得结构体起始地址
  2. oracle中导入导出数据备份数据库
  3. NetBeans 时事通讯(刊号 # 125 - Nov 17, 2010)
  4. OpenGL ES之GLKit的使用功能和API说明
  5. 休眠 关闭串口输出_C#实例:串口通讯
  6. 教你如何进入有密码的 XP 系统(下)
  7. 使用匿名函数动态设置前置或者后置操作(装饰器模式的)
  8. leetcode —— 752. 打开转盘锁
  9. USequencer系列 |初识
  10. SpringBoot 精通系列-如何优雅地使用Mybatis的XML配置
  11. 使用haproxy做负载均衡时保持客户端真实的IP
  12. Android NDK开发之 与NEON相关的库
  13. Ajax请求URL后加随机数原理
  14. NumPy学习笔记之zeros_like()函数(包含zeros函数)
  15. 全国产化 飞腾 vpx板卡
  16. pom文件中配置阿里远程仓库
  17. 论文阅读笔记|Unsuperised Deep Homography
  18. 华擎J3455-ITX黑群晖6.2.3-25426搭建
  19. XXL任务调度平台+java实现定时任务
  20. Balsamiq Mockups简单介绍(UI草图绘制工具)

热门文章

  1. 6种快速统计代码执行时间的方法,真香!(史上最全)
  2. Spring Boot 最佳实践(二)集成Jsp与生产环境部署
  3. PyCharm pyqt5用label控件显示图片 QPixmap 串口通信指示灯
  4. Autofac在Asp.net MVC中在 Areas拆分到不同DLL下的注入失败问题
  5. linux修图,修图只知道Photoshop?11款高逼格修图工具快来get!
  6. 源码里没有configure_深入源码理解.NET Core中Startup的注册及运行
  7. okhttp 工具类_日语学习工具推荐,小白必备!
  8. 微软为Win11用户更新了剪贴工具、计算器以及邮件和日历应用
  9. 腾讯视频电脑版下载_腾讯视频~如何用腾讯视频
  10. Dubbo基本原理机制