有一个json,包含参数的String
值,例如status
和此json在POJO上按Gson
映射,此参数映射在自定义枚举上。
JSON:
{"status":"on"}
POJO
public class StatusData {
@SerializedName("status")
@Expose
private Status status;
}
枚举:
public enum Status {
@SerializedName("on")ON,
@SerializedName("off")OFF;
}
如果json包含正确的值(“on”或“off”) - 好的,但是如果有不支持的值,例如“未知” - 然后它与Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
粉碎。问题:是否有办法改变异常信息以理解出现了什么问题?
答案 0 :(得分:1)
无需创建新类 enum
使用 http://www.jsonschema2pojo.org/ 生成pojo
类
试试这个
public class StatusData
{
@SerializedName("status")
@Expose
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
答案 1 :(得分:0)
public class StatusData {
@SerializedName("status")
@Expose
private Status status;
public String getStatus() {
return status;
}
}
将response
保存为StatusData
StatusData statusData=response;
String status=statusData.getStatus();
if(status.equals("on")){
//code when status is "on"
} else if(status.equals("off")){
//code when status is "off"
}
或使用gson
Gson gson = new Gson();
StatusData statusData = gson.fromJson("json response",
StatusData.class);