c java json_cJSON_json包的C语言解析库

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);

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

e语言mysql中文_大佬们E语言连接MYSQL输出中文乱码怎么破

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼.版本 2.支持库 mysql.支持库 iext.程序集 窗口程序集_启动窗口.子程序 _按钮1_被单击数据库连接句柄 = 连接MySql (“127.0.0.1”, “root”, “zkqingfish*”, “mu_game_1”, 3306) 执行SQL语句 (连接句柄, “set na…

java中删除最大的数,【Java练习】删除字符串中字符个数最少的字符

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼输入:asdasdas输出:asasas[java] view plain copyprint?1.package com.iotex;2.3.import java.util.ArrayList;4.import java.util.Collections;5.import java.util.Comparator;6.import java.util.HashMap…

php实时上传多张图片,PHP实现多张图片上传预览功能

PHP实现多张图片上传预览功能,支持左右移动图片切换位置、删除图片,限制图片上传的数量等-向左移动图片function reverse_left(obj) {var obj_li obj.parents("li");var obj_prev obj_li.prev("li");if (obj_prev.hasClass("…

centos php 默认安装目录,centos系统中的软件安装目录在哪

centos系统中软件的默认安装目录一般在/usr/local或者/opt中。我们还可以通过whereis命令来查看软件的实际安装路径。命令:whereis功能介绍:在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文…

php代码丑,php – 屏幕截图你生命中见过的最丑陋的HTML

我正在使用PHP和libtidy来尝试筛选可能是历史上最糟糕和最不正确的HTML表格使用情况.该站点关闭了几个table,tr,td,font或bold标签,并且一致地嵌套了表中的许多不同的表层.示例代码段:Home Team - WildcatsAway Team - Polar BearsRosters1 Baird, T2 Knight, P8 Mi…

百度指数 php,百度指数是什么?百度指数有什么用?百度指数怎么用?

做SEO必知的第一步:百度指数【百度指数地址】百度指数是用以反映关键词在过去30天内的网络曝光率及用户关注度! 它能形象地反映该关键词的每天的变化趋势!百度指数是以百度网页搜索和百度新闻搜索为基础的免费海量数据分析服务,用…

php获取全部sessionid,php怎么获取所有的sessionid?或获取所有的session

php怎么获取所有的sessionid?或获取所有的sessionphp 如何获取所有的 sessionid ?或获取所有的session就是想通过一个.php文件读取所有的 sessionid ?或获取所有的session ??sessionphp------解决方案----------------…

php atlas,apache atlas是什么

Atlas是一组可伸缩和可扩展的核心基础治理服务——使企业能够有效和高效地满足Hadoop中的遵从性需求,并允许与整个企业数据生态系统进行集成。Apache Atlas为组织提供开放的元数据管理和治理能力,以建立其数据资产的目录,对这些资产进行分类和…

matlab heaviside,Matlab编写的Lyapunov指数计算程序汇总.doc

Matlab编写的Lyapunov指数计算程序汇总matlab编写的Lyapunov指数计算程序汇总申明:以下各程序为个人在网络上收集的Lyapunov指数计算程序,未经过验证,不保证程序的正确性和计算结果的正确性,请大家见谅,也欢迎大家探讨…

php2588,搞清楚一下必胜2588z和2582z哪个好点?都有些什么区别?内幕评测分析

这二个必胜2588z和2582z区别不是很大的哈,款式和配置是差不多的,只是必胜2582Z 2052Z更强一些,看个人需要吧,不过家用的话,这两款都是可以的,我自己用的是必胜2582Z 2052Z,款式多大气的&#xf…

超表面透镜相位matlab,基于超透镜的小F数大景深镜头的设计方法及应用与流程...

本发明涉及基于超透镜的小f数大景深镜头的设计方法及应用。背景技术:监控系统中采用的透镜往往要求具有尽量高的成像分辨率和尽量大的景深,通常情况下,高分辨率的透镜一般具有较小f数,大的景深又要求焦距较短。但是利用传统透镜的…

获取php数组最后,php获取数组最后一个值的2种方法

摘要:这篇文章主要介绍了PHP获取数组最后一个值的2种方法,本文直接给出实现代码,代码中包含注释,需要的朋友可以参考下$arrayarray(1,2,3,4,5);echo $array[count($array)-1];//计算数组长度,然后获取数组最后一个元素,如果数组中最后一个元素…

php等级证书,php银行开放平台接口1:php 对cer证书处理

做一个银行接口要进行证书解析和签名,然后验证获token银行开放平台提供了2个证书public.cer 证书 :里面只有公钥200090491595.pfx证书 :里面有公钥和私钥这里专门做public.cer的说明和处理,.cer为扩展的证书,就是一个x…

php theexcerpt,wordpress的excerpt()函数的用法示例

本篇文章给大家带来的内容是关于wordpress的excerpt()函数的用法示例&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。问题&#xff1a;在wordpres中的single页面&#xff0c;本身引用的<?php the_excerpt(); ?>&…

php查找以xx结尾的的字符串单词,Javascript中查找不以XX字符结尾的单词示例代码_javascript技巧...

首先&#xff0c;让我声明一下&#xff0c;我在写这篇文章之前花了2个多小时在弄正则表达式。悲~悲~悲~按照一般的思路&#xff0c;先来看看其他几个插找方式&#xff1a; 我以字符串var str "eattd gebcat gedat jadu geat beu";為例子。1.以"ge"為开头的…

oracle安装 衍生进程已退出,linux安装oracle 出现问题

linux安装oracle 出现问题0出现错误以后&#xff0c; 图片已经插入请看&#xff0c;然后 我查过资料&#xff0c;说要安装binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm但是我安装的时候&#xff0c;他说要依赖文件&#xff0c;我就不知道依赖文件是什么请问一下&#xff0c;依赖…

oracle 9i hwm,Oracle 10g HWM原理及性能优化

摘 要: HWM(High Water Mark)是表中已经使用过的存储空间与未使用过的存储空间之间的分界线&#xff0c;HWM对全表扫描的性能有非常大的影响。当全表扫描时&#xff0c;Oracle会读取HWM下所有的块&#xff0c;即使这些块中有很多是空块&#xff0c;空块的存在&#xff0c;也即是…

php的curl如何返回值,怎么在PHP中利用CURL获取返回值

怎么在PHP中利用CURL获取返回值发布时间&#xff1a;2021-01-05 16:58:39来源&#xff1a;亿速云阅读&#xff1a;96作者&#xff1a;Leah怎么在PHP中利用CURL获取返回值&#xff1f;针对这个问题&#xff0c;这篇文章详细介绍了相对应的分析和解答&#xff0c;希望可以帮助更多…

oracle安装后开机很慢,Windows下安装Oracle拖慢开机速度的解决方法

环境&#xff1a;win7 oracle R2方法&#xff1a;将安装Oracle后自动开机启动的服务改为手动启动步骤如下&#xff1a;1、修改服务项Ctrl R&#xff0c;输入services.msc&#xff0c;打开服务列表&#xff0c;找到Oracle相关的服务项&#xff0c;右击属性将启动类型改为手动2…

cmd查询Oracle中的表 成表格显示,oracle如何通过cmd导出某个用户下的所有表

SQL Server 日期和时间函数http://www.cnblogs.com/adandelion/archive/2006/11/08/554312.html 1.常用日期方法(下面的GetDate() 2006-11-08 ...循序渐进Python3(十)-- 1 -- pymysql使用pymsql 模块操作数据库 #!/usr/bin/env python , ),()]), userroot, passwd123456, dbte…