- 最新动态
- 产品介绍
- 价格说明
- 快速入门
- 开发指南
- 用户指南
- 最佳实践
- API参考
-
SDK参考
- SDK介绍(联通用户专用)
- 应用侧JAVA SDK API参考(联通用户专用)
- 应用侧Python SDK API参考(联通用户专用)
- 设备侧Agent Lite API参考(C)(联通用户专用)
- 设备侧Agent Lite API参考(Android)(联通用户专用)
- 设备侧Agent Lite API参考(Java)(联通用户专用)
-
常见问题
- 热门问题(联通用户专用)
-
方案咨询(联通用户专用)
- 开发中心、设备接入和设备管理的差异是什么?
- IAM子用户或子项目是否可以开通物联网平台服务?
- 物联网平台支持在华为云的哪些区域开通?
- 如何成为华为IoT生态合作伙伴?
- 物联网平台支持哪些接入方式和协议?
- 华为是否提供模组/硬件终端/应用软件等?
- 设备接入模拟器HubSimulator是否能在设备管理使用?
- 设备接入服务如何获取设备数据?
- 物联网平台的应用和设备可以无限创建吗?
- 物联网平台支持批量注册设备吗?
- 物联网平台对应用和设备有消息流控吗?
- 开发中心单个应用允许接入设备数是多少?
- 数据在物联网平台的保存时间是多久?
- 物联网平台支持的DTLS加密算法有哪些?
- 物联网平台支持二进制大小端模式切换吗?
- 什么是NB-IoT?
- 物联网平台支持的硬件架构和使用的相关组件有哪些?
-
设备集成(联通用户专用)
- 如何获取设备和应用对接地址?
- 如何下载LiteOS IDE/IoT Studio?
- 物联网平台允许一个IMEI号注册多个设备吗?
- 如何设置设备名称?
- IoT设备如何激活?
- 物联网平台如何切换设备的在线/离线状态?
- 通过网关接入的子设备,平台如何识别是哪一个设备?
- deviceId、nodeId和IMEI有什么对应关系?
- Agent Lite和Agent Tiny有什么区别?
- 使用Agent Lite接入的网关设备gwbindinfo.json文件丢失如何处理?
- 运行Agent Lite Java Demo报UnsatisfiedLinkError错误怎么处理?
- 设备如何发送文件至物联网平台?
- 开发中心模拟设备如何上报负数?
- 开发中心支持哪几种省电模式?
- 开发中心支持数据转发吗?
- 开发中心没有设备分组和批量添加设备,怎么办?
- 如何检测NB网络信号?
- NB模组附着网络失败如何处理?
- NB模组绑定设备失败怎么办?
- NB模组无法正常上报数据怎么办?
- NB设备上报数据为字符串时如何转换为二进制编码?
- NB设备接入时,出现513错误?
- 为什么执行AT+CUFN=1会返回error?
- 平台向NB-IoT设备缓存下发命令,为什么设备一直收到同一条控制命令?
- AT+CGDCONT=1, CTNB是什么?
- NB-IoT设备如何选择PSM、DRX、eDRX模式?
- 应用集成(联通用户专用)
-
订阅推送(联通用户专用)
- 调用订阅接口时,回调地址如何获取?
- 应用服务器如何收到命令状态变化的通知?
- 如何获取证书?
- 回调地址可以使用域名吗?
- 订阅后消息推送失败,例如提示503如何处理?
- 应用服务器收到数据,但是平台显示推送失败?
- 应用服务器只有内网地址,能否订阅成功?
- 调用订阅接口时,提示回调地址不合法?
- 物联网平台只支持HTTPS的回调地址吗?
- 回调地址可以修改吗?
- 推送证书失效怎么处理?
- 调用删除单个订阅接口时,subscriptionId如何获取?
- 设备数据变化通知和批量设备数据变化通知的区别是什么?
- 应用服务器如何获取物联网平台推送消息时使用的地址?
- 物联网平台订阅推送是否具有重推机制?
- 为什么设备上报一条数据后应用服务器会收到多条推送?
- 在同一个应用下,平台可以将不同设备上报的数据,推送到两个服务器吗?
- NB-IoT设备已订阅消息确认和命令响应通知,为何应用服务器收不到推送消息?
- 数据上报(联通用户专用)
- 命令下发(联通用户专用)
- 产品模型/Profile(联通用户专用)
- 编解码插件(联通用户专用)
- 软/固件升级(联通用户专用)
- 文档下载
- 通用参考
链接复制成功!
Json组件使用说明
该组件为Agent Lite提供给开发者的工具组件,如果开发者无法进行Json格式的编码和解码,则可以使用该组件进行编码和解码。主要用于上报数据组装与下发命令解析。
1. Json编码
使用Json组件进行编码的流程。
创建Json编码对象。
1 |
HW_JSONOBJ HW_JsonObjCreate() |
获取Json对象根节点。
1 |
HW_JSON HW_JsonGetJson(HW_JSONOBJ hjson) |
往Json对象中添加键值对:
添加pcVal为字符串的Json键值对。
1 |
HW_INT HW_JsonAddStr(HW_JSON pstJson, HW_CHAR *pcKey, HW_CHAR *pcVal) |
添加uiVal为整数的Json键值对。
1 |
HW_INT HW_JsonAddUint(HW_JSON pstJson, HW_CHAR *pcKey, HW_UINT uiVal) |
添加bVal为bool的Json键值对。
1 |
HW_INT HW_JsonAddBool(HW_JSON pstJson, HW_CHAR *pcKey, HW_BOOL bVal) |
添加值为Json的Json键值对,获取到的为子Json对象。
1 |
HW_JSON HW_JsonAddJson(HW_JSON pstJson, HW_CHAR *pcKey) |
添加值为Json数组Json键值对,获取到的为子Json数组对象。
1 |
HW_JSON_ARRAY HW_JsonAddArray(HW_JSON pstJson, HW_CHAR *pcKey) |
往Json数组中添加键值对:
添加pcVal为字符串的Json键值对。
1 |
HW_INT HW_JsonArrayAddStr(HW_JSON_ARRAY *pstArray, HW_CHAR *pcKey, HW_CHAR *pcVal) |
添加uiVal为整数的Json键值对。
1 |
HW_INT HW_JsonArrayAddUint(HW_JSON_ARRAY *pstArray, HW_CHAR *pcKey, HW_UINT uiVal) |
添加bVal为bool的Json键值对。
1 |
HW_INT HW_JsonArrayAddBool(HW_JSON_ARRAY *pstArray, HW_CHAR *pcKey, HW_BOOL bVal) |
添加pucValue为Json的Json值,获取到的为子Json对象。
1 |
HW_JSON HW_JsonArrayAddJson(HW_JSON_ARRAY pstArray) |
添加pucValue为Json数组Json键值对,获取到的为子Json数组对象。
1 |
HW_JSON_ARRAY *HW_JsonArrayAddArray(HW_JSON_ARRAY *pstArray) *HW_JsonArrayAddArray(HW_JSON_ARRAY *pstArray) |
获取Json字符串 。
1 |
HW_CHAR *HW_JsonEncodeStr(HW_JSONOBJ hJson); |
删除Json对象 。
1 |
HW_VOID HW_JsonObjDelete(HW_JSONOBJ *phJson); |
Json编码示例:
待解析Json格式:
{ "temperature":22, "otherInfo":{ "batteryLevel":"low" } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/*变量定义*/ HW_JSONOBJ jsonObj; HW_JSON rootjson; HW_JSON json; HW_CHAR *pcJsonStr; /*创建Json编码对象*/ hJsonObj = HW_JsonObjCreate(); /*获取跟节点Json对象*/ rootjson = HW_JsonGetJson(hJsonObj); /*往根节点中添加键值对*/ HW_JsonAddUint(rootjson, "temperature", 22); /*从根节点中获取子Json对象*/ json = HW_JsonAddJson(rootjson, "otherInfo"); /*在子Json中添加键值对*/ HW_JsonAddStr(json, " batteryLevel", "low"); /*获取Json字符串*/ pcJsonStr = HW_JsonEncodeStr(hjsonObj); /*删除之前创建的Json编码对象,释放资源*/ HW_JsonObjDelete(&hJsonObj); |
2. Json解码
使用Json组件进行解码的流程。
创建Json解析对象。
1 |
HW_JSONOBJ HW_JsonDecodeCreate(HW_CHAR *pucStr, HW_BOOL bStrCpy) |
获取Json解析对象中的Json数据部分。
1 |
HW_JSON HW_JsonGetJson(HW_JSONOBJ hJson) |
获取Json数据中与pucKey对应的字符串。
1 |
HW_CHAR *HW_JsonGetStr(HW_JSON pstJson, HW_CHAR *pucKey) |
获取Json数据中与pucKey对应的无符号整型。
1 |
HW_UINT HW_JsonGetUint(HW_JSON pstJson, HW_CHAR *pucKey, HW_UINT uiDft) |
获取Json数据中与pucKey对应的Boolean值。
1 |
HW_BOOL HW_JsonGetBool(HW_JSON pstJson, HW_CHAR *pucKey, HW_BOOL bDft) |
获取Json数据中与pucKey对应的数组。
1 |
HW_UJSON_ARRAY HW_JsonGetArray(HW_JSON pstJson, HW_CHAR *pucKey) |
获取Json数组的长度。
1 |
HW_UINT HW_JsonArrayGetCount(HW_UJSON_ARRAY pstArray) |
获取Json数组中序号为uiIndex项的Json数据。
1 |
HW_JSON HW_JsonArrayGetJson(HW_UJSON_ARRAY pstArray, HW_UINT uiIndex) |
获取Json数组中序号为uiIndex项的无符号整型。
1 |
HW_UINT HW_JsonArrayGetUint(HW_UJSON_ARRAY pstArray, HW_UINT uiIndex, HW_UINT uiDft) |
获取Json数组中序号为uiIndex项的Boolean值。
1 |
HW_UINT HW_JsonArrayGetBool(HW_UJSON_ARRAY pstArray, HW_UINT uiIndex, HW_BOOL bDft) |
获取Json数组中序号为uiIndex项的字符串。
1 |
HW_CHAR *HW_JsonArrayGetStr(HW_UJSON_ARRAY pstArray, HW_UINT uiIndex) |
获取Json数组中序号为uiIndex项的子数组。
1 |
HW_UJSON_ARRAY HW_JsonArrayGetArray(HW_UJSON_ARRAY pstArray, HW_UINT uiIndex) |
删除之前创建的Json解析对象。
1 |
HW_VOID HW_JsonObjDelete(HW_JSONOBJ *phJson) |
Json解析示例:
待解析Json格式:
{ "action":"notify", "type":"userstate", "userstateinfo":[ { "num":"11111 ", "state":"idle" }, { "num":"11111", "state":"ringing" } ] }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/*变量定义*/ HW_JSONOBJ jsonObj; HW_JSON json; HW_UJSON_ARRAY jsonArray; HW_cHAR *action; HW_cHAR *type; HW_UiNT count; HW_UiNT index; /*创建Json解析对象*/ jsonObj = HW_JsonDecodeCreate(jsonStr, HW_TRUE); /*获取Json解析对象中的Json数据部分*/ json = HW_JsonGetJson(jsonObj); /*获取Json数据中与"action"对应的字符串*/ action = HW_JsonGetStr(json, "action"); /*获取Json数据中与"type"对应的字符串*/ type = HW_JsonGetStr(json, "type"); /*获取Json数据中与"userstateinfo"对应的Json数组*/ jsonArray = HW_JsonGetArray(json, "userstateinfo"); /*获取数组jsonArray的长度*/ count = HW_JsonArrayGetCount(jsonArray); for (index = 0; index < count; index++) { /*获取数组jsonArray中序号为index项的Json数据*/ HW_JSON jsonItem = HW_JsonArrayGetJson(jsonArray, index); /*获取jsonItem中与" num "对应的字符串*/ HW_cHAR *num = HW_JsonGetStr(jsonItem, "num"); /*获取jsonItem中与" state "对应的字符串*/ HW_cHAR *state = HW_JsonGetStr(jsonItem, "state"); ...... } /*删除之前创建的Json解析对象,释放资源*/ HW_JsonObjDelete(jsonObj); |