Rest Generic在jax-rs

时间:2017-05-05 13:02:42

标签: java rest jersey

早上好。

我对使用泛型的休息服务的答案有疑问 - 我有一个具有以下结构的通用对象:

import java.io.Serializable;

public class Data implements Serializable {
    private Object data;
    private Long numero_reg;

    /**
     * @return the data
     */
    public Object getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(Object data) {
        this.data = data;
    }

    /**
     * @return the numero_reg
     */
    public long getNumero_reg() {
        return numero_reg;
    }

    /**
     * @param numero_reg the numero_reg to set
     */
    public void setNumero_reg(long numero_reg) {
        this.numero_reg = numero_reg;
    }

}

当回答其中一个对象以满足不同休息的对象时,标准化响应的目的如下:

@Path("/pruebas")
public class Pruebita {
    @GET
    public Data getalgo(){
        ObjectoDatos od=new ObjectoDatos();
        od.setPrueba("hola");
        od.setPrueba2("hola2");
        Data sd=new Data();
        sd.setData(od);
        sd.setNumero_reg(1);
        return sd;
    }
}

当它遇到响应json回答时,它变成对象的toString并且不显示对象的数据。 有人能帮助我吗?

{"data":"bo.ObjectoDatos@6d858b63","numero_reg":1}

这是错误 - 我得到了对象的toString,而不是对象本身。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案 - 我使用guava重新打包的HashMaps类:

    @Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
    int response = responseContext.getStatus();
    Object entidad = responseContext.getEntity();
    if (entidad != null && response == 200) {
        int nroRegistros = (entidad instanceof List) ? (((List) entidad).size()) : 1;
        Map<String, Object> respuesta = Maps.newHashMap();
        respuesta.put("data", entidad);
        if(nroRegistros != 1) {
            respuesta.put("numero_reg", nroRegistros);                
        }
        responseContext.setEntity(respuesta);
    }
}

以上代码运作良好并解决了我的问题。