在当前情况下,我有一个接受传入JSON消息的REST端点。
问题是,我认为我不能指定POJO对象,因此Jackson可以将JSON传递到POJO对象中。这样做的原因是,我无法控制到达该端点的内容,而且字段和类型的数量会随着时间的推移而改变,因此,在手动之前定义POJO似乎不是一个选项。
所以,我想问题,is....can,我只是告诉杰克逊,不要做任何编组,并给出字符串的反应?稍后我可以处理JSONObject-JSONArray或Gson。说我会有这样的方法:
@POST
@Path("/callback")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response facebookUpdate(String json) {
//Do something with the json response...
}如果泽西-日航不可行的话.还有其他选择吗?
谢谢!亚历杭德罗
发布于 2014-11-13 22:09:43
最简单的方法就是不将json注入方法中,而是使用请求对象:
public Response facebookUpdate(@Context request) {
try(InputStream is=request.getEntityInputStream()) {
...
}
}然后,您可以从请求中获取请求的输入流,并以任何您喜欢的方式解析它。
对于解析,我可以推荐我自己的杰森杰库,它是专门为支持开放式场景而编写的,如您所描述的,并使用jackson将其反序列化为高度定制的java.util.Map和java.util.List实现。Gson也是一个非常可靠的选择。
如果您想在整个范围内执行此应用程序,您可以编写自己的@Provider,并在那里执行相同的操作。我现在就是这样使用我的图书馆的。
https://stackoverflow.com/questions/26919156
复制相似问题