一、导入相关依赖
打开build.gradle(:app),dependencies 中导入下面两个依赖
dependencies {
implementation 'com.alibaba.android:vlayout:1.2.36'
compile 'com.alibaba:fastjson:1.1.70.android'
}
二、将请求到的json串数据转为List<?>
1、新建与请求的json数据中的一样属性的类,DeviceData.java(示例,实际请根据自己请求相应数据情况新建相应属性的类)
注意:实体类中必须有一个空的构造方法,不然会报’com.alibaba.fastjson.JSONException: default constructor not found’这个错误
下面是这个实体类的代码:
package com.example.crab_breeding.first_home.horizontal_menus.all_data;
/**
* 设备数据实体类
*/
public class DeviceData {
String deviceId;
String deviceDescription;
String dataType;
String dataValue;
String deviceUnit;
String uploadData;
public DeviceData() {
}
public DeviceData(String deviceId, String deviceDescription, String dataType, String dataValue, String deviceUnit, String uploadData) {
this.deviceId = deviceId;
this.deviceDescription = deviceDescription;
this.dataType = dataType;
this.dataValue = dataValue;
this.deviceUnit = deviceUnit;
this.uploadData = uploadData;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getDataValue() {
return dataValue;
}
public void setDataValue(String dataValue) {
this.dataValue = dataValue;
}
public String getDeviceUnit() {
return deviceUnit;
}
public void setDeviceUnit(String deviceUnit) {
this.deviceUnit = deviceUnit;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceDescription() {
return deviceDescription;
}
public void setDeviceDescription(String deviceDescription) {
this.deviceDescription = deviceDescription;
}
public String getUploadData() {
return uploadData;
}
public void setUploadData(String uploadData) {
this.uploadData = uploadData;
}
}
2、代码中相应请求完数据的地方进行转换,下面是本人的例子
(1)导入依赖,新建存放数据的集合
import com.alibaba.fastjson.JSONArray;
private List<DeviceData> deviceDataList;
(2)需要地方进行转换,res为请求到的json串数据
请求到的数据res大概长这样:
//logcat中输入deal可观察json串数据
Log.e("deal", "deal:"+res );
//parseArray方法有两个参数,一个是json串数据,一个是实体类
deviceDataList= JSONArray.parseArray(res,DeviceData.class);
//可以在logcat中输入list观察几项数据来判断全部数据是否已存入list中
for (int i=0;i<dDList.size();i++){
DeviceData d=dDList.get(i);
Log.i("list:",d.getDataType()+d.getDeviceUnit());
}
像这样,deviceDataList中已有数据