gpt4 book ai didi

java - 无法从 Jersey GET 响应中获取 JSON 数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:43 24 4
gpt4 key购买 nike

我正在开发一个 Restful 网络客户端,并试图从 GET 方法的响应中获取 JSON 负载。我正在使用 Jersey 。但我就是无法使用 response.getEntity() 方法读取 JSON 数据。我尝试了很多方法,包括 response.bufferEntity(),但输出始终为空。下面是我的代码和输出,此外,我可以在 wireshark 捕获的响应数据包中看到 JSON 数据。我真的很感谢大家试图帮助找出原因或提供解决方案。谢谢!

代码:

    public JSONObject Get(String requestPath){

ClientResponse response = webResource.path(requestPath)
.header("Content-Type", contTypeHeader )
.header("Accept",acceptHeader)
.header("Authorization", authZ )
.get(ClientResponse.class);

response.bufferEntity();
if (!(response.getStatus() == 201 || response.getStatus() == 200)) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}

System.out.println(response.getEntity(JSONObject.class));
return null;

}

输出总是这样:{}

最佳答案

你不能使用 JSONObject 除非你有一个 MessageBodyReader 。查看更多信息 JAX-RS Entity Providers .您当前使用的提供程序(可能是 Jackson)仅支持 JavaBean POJO 或它们的集合。例如,如果你有这个 JSON

{ "property1" : "value1", "property2": "value2" }

然后你需要有一个像 POJO

public class Bean {
private String property1;
private String property2;
// getters and setters
}

然后你可以做 getEntity(Bean.class)。你得到一个空对象的原因是反序列化在 setter 上起作用。它在 JSON 上查找与 setter 匹配的属性,并使用它来设置属性。 JSON 对象没有您的 JSON 属性的 setter 。

关于java - 无法从 Jersey GET 响应中获取 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644676/

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