Java 无法使用jersey获取完全JSON
我正在尝试使用jersey api读取json。这是一个很长的json。 问题是我无法获得完整的json。请查看下面的两个链接以了解更多信息 (10个对象) (很抱歉,因为此对象无法格式化。但它只能获取4个对象和一部分第5个对象。) 这是我获取json的代码:Java 无法使用jersey获取完全JSON,java,json,jersey,Java,Json,Jersey,我正在尝试使用jersey api读取json。这是一个很长的json。 问题是我无法获得完整的json。请查看下面的两个链接以了解更多信息 (10个对象) (很抱歉,因为此对象无法格式化。但它只能获取4个对象和一部分第5个对象。) 这是我获取json的代码: Client client = Client.create(); WebResource resource = client.resource(url); ClientResponse clientResponse
Client client = Client.create();
WebResource resource = client.resource(url);
ClientResponse clientResponse = resource.accept("application/json").get(ClientResponse.class);
if(clientResponse.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + clientResponse.getStatus());
}
String output = "";
String response = "";
BufferedReader br = new BufferedReader(new InputStreamReader(
(clientResponse.getEntityInputStream())));
while ((output = br.readLine()) != null) {
response = response + output;
}
br.close();
return response;
我不知道我做错了什么。您的客户正在接收完整的输出。您在日志中看到被截断的输出,因为默认情况下启用的LoggingFilter将截断输出 检查此处的构造函数以了解如何设置maxEntitySize
您是否将JSON字符串存储在数据库中?如果这是真的,那么你必须注意列的大小:TEXT、MEDIUMTEXT等。几个月前有这个问题,我的结果和你的一样,所以我编辑了我的数据库。@Nico没有。我不会将它存储在数据库中。只需从服务器获取它,现在就可以在我的页面上显示它。谢谢。你是从哪里用c/p计算实际结果的(控制台,使用sysout;调试器;其他涉及的框架)?你是否尝试过使用一个具体的响应对象,比如MobilePhone.class,而不是ClientResponse.class,这样MessageBodyReader就可以完成它的工作了?我很确定你在LoggingFilter中看到了这一点。除非将输出配置为打印整个实体,否则日志过滤器将截断输出。您正在查看服务器上日志输出中的输出吗?顺便说一句,输出末尾的省略号(…)是一个死角,表明您的输出被截断了。@ChrisHinshaw似乎您是对的。谢谢大家的评论。