- 最新动态
- 产品介绍
- 快速入门
- 用户指南
- 开发指南
-
API参考
- 北向API参考
- 北向JAVA SDK API参考
- 北向PHP SDK API参考
- 北向Python SDK API参考
- Agent Lite API参考(Android)
- Agent Lite API参考(C)
- Agent Lite API参考(Java)
- MQTT接口参考
-
常见问题
- 常见问题导航
- 产品规格
- 产品使用
-
二次开发
-
产品开发常见问题
- Profile定义
- 插件开发
-
设备开发
- 在物联网平台注册完设备,真实设备无法接入物联网平台
- 终端设备接入物联网平台时,出现513错误
- 物联网平台支持的DTLS加密算法有哪些
- AT+CGDCONT=1,"IP","CTNB" 中 CTNB 是什么
- 设备如何选择PSM、DRX、eDRX模式
- 设备收不到平台下发的命令
- 设备已经上报数据,但是物联网平台未收到
- 设备上报了数据,且日志无报错,但在历史数据中没有数据
- 设备收到命令需要多长时间
- 设备上报数据后,收不到物联网平台回复的数据上报响应
- 设备在一个位置上报数据成功,在另一个位置上报失败
- 设备上报了命令执行结果,但是命令状态未切换为成功
- 物联网平台支持大小端模式切换吗
- 省电模式DRX模式,设备1-2天未上报数据,下发命令失败
-
应用开发常见问题
-
接口调用
- 本地可以成功调用物联网平台的鉴权接口,但是在应用服务器调用失败
- 应用服务器调用接口报错如何定位
- 在线应用模拟器下发命令失败
- 模拟器下发命令成功,调用API下发命令失败
- 应用服务器下发命令失败,收到403的错误,提示回调地址冲突
- 应用服务器如何下发缓存命令
- 历史命令中显示的超期是什么意思
- 物联网平台下发命令有重发机制吗
- 历史命令中显示超时是什么意思
- 平台能批量下发命令吗
- 平台接口只能用Java调用吗
- 物联网平台的命令状态总共有几种
- 调用注册设备接口失败
- 之前调用接口成功,一段时间后参数不变,但是调用接口失败
- 之前对单个设备下发命令成功,一段时间后下发命令失败
- 历史数据中有数据,但是调用查询设备历史数据接口没有返回值
- 通过调用接口在物联网平台注册设备,一段时间后注册设备被平台删除
-
订阅与推送
- 调用订阅接口时,提示回调地址不合法
- 调用删除单个订阅接口时,subscriptionId如何获取
- 应用服务器收不到平台推送的数据
- 如何导出https推送证书
- 设备数据变化通知和批量设备数据变化通知的区别是什么
- 应用服务器如何获取设备的IMEI号
- 应用服务器收到数据,但是平台显示推送失败
- 历史数据中有数据,但是有时能推送到应用服务器,有时推不到
- 应用服务器如何获取物联网平台推送消息时使用的地址
- 物联网平台是否具有重推机制
- 应用服务器如何收到命令状态变化的通知
- 已订阅消息确认通知和命令响应通知,为何应用服务器收不到推送消息
- 物联网平台只支持HTTPS的回调地址吗
- 在同一个应用下,物联网平台可以将不同设备上报的数据,推送到两个服务器吗
- 订阅地址可以用域名吗
- 回调地址可以修改吗
- 调用订阅接口时,回调地址如何获取
-
接口调用
- 软/固件升级常见问题
- 其他常见问题
-
产品开发常见问题
- 通用参考
链接复制成功!
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); |