Получение проблемы с отображением JSON - PullRequest
0 голосов
/ 24 октября 2018

Я получаю java.lang.IllegalStateException: закрытое исключение, когда я пытаюсь сопоставить объект ответа с объектом VO, используя ObjectMapper

Код:

     */
        Request request = new Request.Builder().url(apiUrl).post(body)
                .addHeader(CommunicationConstants.API_KEY, apiKey)
                .addHeader(CommunicationConstants.EMAIL_CONTENT_TYPE, contentType).build();

        Response response = client.newCall(request).execute();
        ObjectMapper mapper = new ObjectMapper();
        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        System.out.println("Error:"+response.body().string());
        falconideRes = mapper.readValue(response.body().string(), FalconideResponseVO.class);
        logger.info("Falconide Triggering call ends.");

открытый класс FalconideResponseVO {

@JsonProperty("error_info")
private ErrorInfo errorInfo;
@JsonProperty("message")
private String message;

@JsonProperty("message")
public String getMessage() {
    return message;
}

@JsonProperty("message")
public void setMessage(String message) {
    this.message = message;
}
/**
 * @return the errorInfo
 */
@JsonProperty("error_info")
public ErrorInfo getErrorInfo() {
    return errorInfo;
}

/**
 * @param errorInfo the errorInfo to set
 */
@JsonProperty("error_info")
public void setErrorInfo(ErrorInfo errorInfo) {
    this.errorInfo = errorInfo;
}

}

открытый класс ErrorInfo {

@JsonProperty("error_message")
private String errorMessage;
@JsonProperty("error_code")
private Integer errorCode;

@JsonProperty("error_message")
public String getErrorMessage() {
return errorMessage;
}

@JsonProperty("error_message")
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}

@JsonProperty("error_code")
public Integer getErrorCode() {
return errorCode;
}

@JsonProperty("error_code")
public void setErrorCode(Integer errorCode) {
this.errorCode = errorCode;
}

}

{"error_info":{"error_message":"Parameter [subject] not passed in the api call","error_code":113},"message":"Payload_Error"}

Необходимо сопоставить это с объектом VO.Но когда я это делаю, я получаю java.lang.IllegalStateException: закрытое исключение

1 Ответ

0 голосов
/ 24 октября 2018

Вы вызываете метод .string() дважды.Я полагаю, что вы можете сделать это только один раз, так как это метод завершения, отсюда и «закрытое» исключение.

Чтобы быть более конкретным:

System.out.println("Error:"+response.body().string());
falconideRes = mapper.readValue(response.body().string(), FalconideResponseVO.class);

во второй строке Streamзакрыто.Если вы хотите распечатать его, а затем использовать в другой функции mapper, вы должны извлечь переменную раньше, например:

String variable = response.body().string();
System.out.println("Error:"+variable);
falconideRes = mapper.readValue(variable, FalconideResponseVO.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...