При синтаксическом анализе ответа json один из ключей может иметь строковое значение или значение NULL.Я анализирую ответ как:
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"status",
"code",
"exception"
})
public class Response {
private String status;
private long code;
private String exception;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public long getCode() {
return code;
}
public void setCode(long code) {
this.code = code;
}
public String getException() {
return exception;
}
public void setException(String exception) {
this.exception = exception;
}
Когда я получаю значение NULL, у меня есть ошибка.Как я могу сделать это правильно?
Я пытаюсь @JsonInclude (JsonInclude.Include.NON_NULL), но это не работает
public class JsonParserResponse throws UnsupportedEncodingException, JsonParseException, IOException {
Response resp= new Response();
try{
JSONObject outerObject = new JSONObject({"status":null,"code":0,"exception":""} );
resp.setStatus(outerObject.getString("status")); System.out.printf("name=%s , value=%s\n", "status", outerObject.getString("status"));
resp.setCode(outerObject.getInt("code")); System.out.printf("name=%s , value=%s\n", "code",outerObject.getInt("code"));
resp.setException(outerObject.getString("exception")); System.out.printf("name=%s , value=%s\n","exception" ,outerObject.getString("exception"));
}catch(Exception e) {
e.printStackTrace();
}
У меня ошибка ^
JSONObject["status"] not a string.
at org.json.JSONObject.getString(JSONObject.java:639)
at ru.JsonParserResponse.parseResult(JsonParserResponse.java:161)
at ru.JsonParserResponse.main(JsonParserResponse.java:74)