当我们通过API调取OneNET云平台数据时,往往会返回一段JSON格式的数据,并不能直接使用,必须通过解析才能得到值。
以调取OneNET云平台项目的温湿度数据为例:
会获得以下数据返回:
{"msg":"succ","code":0,"data":[{"identifier":"humi","data_type":"int32","name":"当前湿度","time":1716021194684,"value":"58","access_mode":"只读"},{"identifier":"temp","data_type":"int32","name":"当前温度","time":1716021194684,"value":"25","access_mode":"只读"}],"request_id":"d0596f8c80004683a27d4663dc1c5e8e"}
但是这样的数据对初学者来说很麻烦,不知道如何解析,网上有许多例子但是没有针对性。
本文提供了下面的方法。借助FastJson包,成功获取温度和湿度数值,供初学者参考:
代码中的result即为从云平台获取的String类型的字符串:
//数据解析返回
JSONObject jsonObject = JSON.parseObject(result);
System.out.println("jsonobj="+jsonObject);
JSONArray array=jsonObject.getJSONArray("data");
//解析获得湿度值
JSONObject jsonObject2=array.getJSONObject(0);
System.out.println("data内的第一组数据="+jsonObject2);
String hum=jsonObject2.getString("value");
System.out.println("湿度value="+hum);
//解析获得温度值
JSONObject jsonObject3=array.getJSONObject(1);
System.out.println("data内的第二组数据="+jsonObject3);
String tem=jsonObject3.getString("value");
System.out.println("温度value="+tem);
代码运行结果:
关于如何获取JSON数据以及解析JSON所使用的 FastJSON.jar包请阅读笔者的另一篇文章:
基于ESP32和OneNET的温湿度物联网系统http://t.csdnimg.cn/rE55a
感谢阅读!
获取单片机软硬件PCB工程设计帮助与成品服务可通过:
闲鱼搜索用户“辉睿物联网”
电子邮件:lijiahui.shine@foxmail.com