【发布时间】:2015-09-22 20:25:27
【问题描述】:
我的数据库中存储了一个 JSON,我想返回该 json,因为它在 jax-rs 获取服务中,而不使用 POJO。有没有办法做到这一点?我尝试将其设置为字符串,但结果被转义。我也尝试返回一个 JSONObject,但我得到了“org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.json.JSONObject”,所以我想我不能使用那个对象类型。最后我使用了一个 JSONNode,它返回我的数据是这样的:
{
"nodeType": "OBJECT",
"int": false,
"object": true,
"valueNode": false,
"missingNode": false,
"containerNode": true,
"pojo": false,
"number": false,
"integralNumber": false,
"floatingPointNumber": false,
"short": false,
"long": false,
"double": false,
"bigDecimal": false,
"bigInteger": false,
"textual": false,
"boolean": false,
"binary": false,
"null": false,
"float": false,
"array": false
}
代码。
@GET
@Path("/campanas")
public Response obtenerCampanas(@HeaderParam("Authorization") String sessionId) {
ResponseBase response = new ResponseBase();
int requestStatus = 200;
CampanaResponse campanaResponse = campanasFacade.obtenerCampanas();
response.setData(campanaResponse);
response.setRequestInfo(GlosaCodigoRequest.OPERACION_EXITOSA);
return Response.status(requestStatus).entity(response).build();
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Campanas")
public class CampanaResponse implements Serializable {
private static final long serialVersionUID = -7414170846816649055L;
@XmlElement(name = "campanas", required = true)
private List<Campana> campanas;
@XmlElement(name = "fecha", required = true)
private Date fecha;
//getters.. setters
public static class Campana {
private String idCampana;
private String nombre;
private String urlBanner;
private String global;
private String numeroCuenta;
private Date fechaDonaciones;
private Date fechaInicio;
private Date fechaFin;
private JSONObject config;
//getters..setters
}
}
有没有办法做到这一点?谢谢。
jax-rs,weblogic 12.1.3
【问题讨论】:
-
可能的解决方案可能在这里 - stackoverflow.com/questions/13243037/…
-
您使用的是哪个库?如果您使用内置的 HTTP 库,您将返回一个 InputStream,您可以将其复制到一个字符串中。
-
哇,这是一种非常低效的指定类型的方法。
-
我在这里没有看到其他相关的东西
-
为了让 Jackson 反序列化 JSONObject,您需要注册 JSON.org Jackson 模块 (github.com/FasterXML/jackson-datatype-json-org)。代码如下所示 - ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JsonOrgModule());