1.数组解析:
BatteryBox boxInfo = new BatteryBox();
boxInfo.setSize(jsonObject.getString("size"));
boxInfo.setHwVer(jsonObject.getString("hwVer"));
boxInfo.setFwVer(jsonObject.getString("fwVer"));
boxInfo.setAlarm(jsonObject.getInt("alarm"));
boxInfo.setSn(jsonObject.getString("sn"));
JSONArray jsonArray = jsonObject.getJSONArray("slots");
List<BatterySlot> slotList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
BatterySlot slot = new BatterySlot();
slot.setFloor(jsonObject1.getInt("floor"));
slot.setType(jsonObject1.getString("type"));
slot.setAlive(jsonObject1.getBoolean("isAlive"));
slot.setLoaderVer(jsonObject1.getString("loaderVer"));
slot.setLoaderDate(jsonObject1.getString("loaderDate"));
slot.setAppVer(jsonObject1.getString("appVer"));
slot.setAppDate(jsonObject1.getString("appDate"));
slot.setSlotSn(jsonObject1.getString("slotSn"));
slotList.add(slot);
}
boxInfo.setSlots(slotList);
return boxInfo;
工具类:
package com.thirtydays.smartgarage.entity;
import java.util.List;
/**
* 充电柜
*/
public class BatteryBox {
private String requestType;
private int resultCode;
private String size;
private String hwVer;
private String fwVer;
private int alarm;
private String sn;
private List<BatterySlot> slots;
public String getRequestType() {
return requestType;
}
public void setRequestType(String requestType) {
this.requestType = requestType;
}
public int getResultCode() {
return resultCode;
}
public void setResultCode(int resultCode) {
this.resultCode = resultCode;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getHwVer() {
return hwVer;
}
public void setHwVer(String hwVer) {
this.hwVer = hwVer;
}
public String getFwVer() {
return fwVer;
}
public void setFwVer(String fwVer) {
this.fwVer = fwVer;
}
public int getAlarm() {
return alarm;
}
public void setAlarm(int alarm) {
this.alarm = alarm;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public List<BatterySlot> getSlots() {
return slots;
}
public void setSlots(List<BatterySlot> slots) {
this.slots = slots;
}
@Override
public String toString() {
return "BatteryBox{" +
"requestType='" + requestType + '\'' +
", resultCode=" + resultCode +
", size='" + size + '\'' +
", hwVer='" + hwVer + '\'' +
", fwVer='" + fwVer + '\'' +
", alarm=" + alarm +
", sn='" + sn + '\'' +
", slots=" + slots +
'}';
}
}
嵌套类里面的嵌套内容List:
package com.thirtydays.smartgarage.entity;
/**
* 充电槽
*/
public class BatterySlot {
private int floor;
private String type;
private boolean isAlive;
private String loaderVer;
private String loaderDate;
private String appVer;
private String appDate;
private String slotSn;
public boolean isAlive() {
return isAlive;
}
public void setAlive(boolean alive) {
isAlive = alive;
}
public int getFloor() {
return floor;
}
public void setFloor(int floor) {
this.floor = floor;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getLoaderVer() {
return loaderVer;
}
public void setLoaderVer(String loaderVer) {
this.loaderVer = loaderVer;
}
public String getLoaderDate() {
return loaderDate;
}
public void setLoaderDate(String loaderDate) {
this.loaderDate = loaderDate;
}
public String getAppVer() {
return appVer;
}
public void setAppVer(String appVer) {
this.appVer = appVer;
}
public String getAppDate() {
return appDate;
}
public void setAppDate(String appDate) {
this.appDate = appDate;
}
public String getSlotSn() {
return slotSn;
}
public void setSlotSn(String slotSn) {
this.slotSn = slotSn;
}
@Override
public String toString() {
return "BatterySlot{" +
"floor=" + floor +
", type='" + type + '\'' +
", loaderVer='" + loaderVer + '\'' +
", loaderDate='" + loaderDate + '\'' +
", appVer='" + appVer + '\'' +
", appDate='" + appDate + '\'' +
", slotSn='" + slotSn + '\'' +
'}';
}
}
2.普通解析:
JSONObject jsonObject;
try {
jsonObject = new JSONObject(data);
} catch (Exception e) {
ToastUtils.showShort("数据转JSON失败:" + e.toString());
if (isDebug) {
// 从Throwable获取可记录的堆栈跟踪
String error = "Parse data failed." + Log.getStackTraceString(e);
writeToFile(error);
}
return;
}
if (jsonObject.getInt("resultCode") == 0) {
switch (jsonObject.getString("requestType")) {
case "BOX_INFO":
BatteryBox boxInfo = parseToBoxInfo(jsonObject);
if (null == boxInfo) {
return;
}
if (null != listener) {
listener.onGetBoxInfo(boxInfo);
} else {
ToastUtils.showShort("消息监听器为空");
}
break;
case "SLOT_STATIC_DATA":
SlotStaticInfo slotInfo = parseToStaticBatteryInfo(jsonObject);
if (null == slotInfo) {
return;
}
if (null != listener) {
listener.onGetSlotStaticData(slotInfo);
} else {
ToastUtils.showShort("消息监听器为空");
}
break;
case "SLOT_DYNAMIC_DATA":
SlotDynamicInfo dynamicSlotInfo = parseToDynamicBatteryInfo(jsonObject);
if (null == dynamicSlotInfo) {
return;
}
if (null != listener) {
listener.onGetSlotDynamicData(dynamicSlotInfo);
} else {
ToastUtils.showShort("消息监听器为空");
}
break;
}
}