gpt4 book ai didi

java - 使用JERSEY和JACKSON解析未知结构的POST请求

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:55 24 4
gpt4 key购买 nike

我目前的情况是,我有一个 REST 端点,它接受传入 JSON 消息的 POST。

问题是,我认为我无法指定 POJO 对象,以便 Jackson 可以将 JSON 编码到 POJO 对象中。原因是我无法控制到达该端点的内容,并且字段的数量和类型可能会随着时间的推移而改变,因此,预先定义 POJO 似乎不是一个选择。

所以我想问题是......我可以简单地告诉 jackson 不要进行任何编码并给出响应的字符串吗?我可以稍后使用 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...
}

如果这对于 Jersey-JAX 不可行...还有其他替代方案吗?

谢谢!亚历杭德罗

最佳答案

最简单的方法就是不将 json 注入(inject)到方法中,而是使用请求对象:

public Response facebookUpdate(@Context request) {
try(InputStream is=request.getEntityInputStream()) {
...
}
}

然后,您可以从请求中获取请求的输入流并以您喜欢的方式解析它。

对于解析我可以推荐我自己的 jsonj库,它是专门为支持您所描述的开放式场景而编写的,并使用 jackson 反序列化为 java.util.Map 和 java.util.List 的高度定制的实现。 Gson 也是一个非常可靠的选择。

如果您想在应用程序范围内执行此操作,您可以编写自己的 @Provider 并在那里执行相同的操作。这就是我目前实际使用我的图书馆的方式。

关于java - 使用JERSEY和JACKSON解析未知结构的POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com