无法从响应 jaxb java 转换为布尔值

问题描述 投票:0回答:0

在 java 6 中,我尝试从服务中获取数据。 IT 有时返回布尔值,有时返回字符串,所以我为字符串示例响应制作了通用响应类:

{
    "data": "D",
    "success": true,
    "error": null,
    "validations": null
}

布尔值:

{
    "data": true,
    "success": true,
    "error": null,
    "validations": null
}

应对类:

@XmlRootElement
public class BaseResponsefaj<T>{

    private T data;
    private boolean success = true;
    private ExceptionInfo error;
    private List<ValidationInfo> validations;

    public BaseResponsefaj(T data){
        this.data = data;
    }

    public BaseResponsefaj(T data, boolean success){
        this.data = data;
        this.success = success;
    }

    public BaseResponsefaj(){
    }

    public BaseResponsefaj(boolean success, ExceptionInfo error) {
        super();
        this.success = success;
        this.error = error;
    }

    public BaseResponsefaj(boolean success, ExceptionInfo error, T data) {
        super();
        this.data = data;
        this.success = success;
        this.error = error;
    }

    public ExceptionInfo getError() {
        return error;
    }

    public void setError(ExceptionInfo error) {
        this.error = error;
    }

    public List<ValidationInfo> getValidations() {
        return validations;
    }

    public void setValidations(List<ValidationInfo> validations) {
        this.validations = validations;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "BaseResponse{" +
                "data=" + data +
                ", success=" + success +
                ", error=" + error +
                ", validations=" + validations +
                '}';
    }
}

尝试从服务中获取 from 时出错:

java.lang.ClassCastException: org.apache.xerces.dom.ElementNSImpl incompatible with java.lang.String

还有布尔值。

这就是我的称呼:

    final BaseResponsefaj<?> response;
    ClientResponse getResponse = webResource
         .header("x-api-key", getAhtapotService().getapi())
         .accept("application/json")
         .type(MediaType.APPLICATION_JSON_TYPE)
         .get(ClientResponse.class);

                
    final int status = getResponse.getStatus();
            
    if (HttpStatus.SC_OK == status) {

直到这里对于 2 个服务相同,字符串和布尔值。之后,我得到:

response = getResponse.getEntity(BaseResponsefaj.class);

并在一项服务中转换为布尔值,在其他字符串中:

(String) response.getData();

但它给出了错误。这是 jersey-bundle-1.19.1.jar 来打电话。

我不想为每个创建 2 个响应类。将来可能会有更多类型。所以通用会更好,但我无法解决这个问题。而且我不知道布尔响应类是否也可以修复

它给出了那个错误

"java.lang.ClassCastException:" org.apache.xerces.dom.ElementNSImpl"" incompatible" with java.lang.Boolean

有时它给

Class has two properties of the same name "data"
java jaxb
© www.soinside.com 2019 - 2024. All rights reserved.