Есть json, содержащий значение параметра String, например. status и этот json отображаются Gson в POJO, и этот параметр отображается в настраиваемом перечислении.
JSON:
{"status":"on"}
POJO
public class StatusData {
@SerializedName("status")
@Expose
private Status status;
}
перечисление:
public enum Status {
@SerializedName("on")ON,
@SerializedName("off")OFF;
}
И если json содержит правильные значения ("включено" или "выключено") - все в порядке, но если есть неподдерживаемое значение, например "неизвестно" - то глючит с Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference. И вопрос: есть ли способ изменить сообщение об исключении, чтобы понять, что пошло не так?




Нет необходимости создавать новый класс 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;
}
}
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);
Да, это поможет обойти проблему, но я хочу просто установить собственное сообщение для исключения, возможно, некоторые стратегии Gson могут помочь решить эту проблему.
Затем я хочу работать с enum, но без String, я знаю, что могу изменить геттеры и сеттеры и сопоставить String и Enum там, но я просто хочу исключить исключение с понятным описанием