早上好。
我对使用泛型的休息服务的答案有疑问 - 我有一个具有以下结构的通用对象:
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,而不是对象本身。
答案 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);
}
}
以上代码运作良好并解决了我的问题。