报错: Caused by: java.lang.IllegalStateException: Expected a double but was BEGIN_OBJECT at line 1 column 101 path $.data.datastreams[0].datapoints[0].value
原因:json数据解析出错。
解决:JSON数据分为两种----对象和数组,对象用{}括起来,数组用[]括起来。我是通过Gson进行数据解析的,根据上报的值,得知我的value是一个对象,需要在原有解析类的基础上增加一个value的类,理清了关系后自己重新写了gson数据解析的类,逻辑关系整理起来容易混乱,也可以直接根据上报的数据,然后通过json转换工具直接生成所需要的类(在搞懂的基础上,更推荐这种方式,节省时间。),还要注意在主类(获取json解析数据的类)中更改对应的数据获取方式。更改后我在主类中做出的改变: ,
拓展:Json解析方式之一是通过Gson,Gson是Google提供的用来在Java对象和Json数据之间进行映射的Java类库,可以将Java对象和Json数据进行相互转换,使用时需要导入gson的.jar包,放在lib文件夹下,导入后记得“Add as library”。
Json数据分为两种----对象和数组,对象用{}括起来,数组用[]括起来。Json数组要用List保存。
解析Json对象:Gson gson = new Gson();User user=gson.fromJson(jsonData,User.class);
解析Json数组:Gson gson=new Gson();List<User> userList=gson.fromJson(jsonData, new TypeToken<User>(){}.getType());