Java API返回不完整的JSON文件

Java API返回不完整的JSON文件,java,json,Java,Json,我使用战争游戏API访问游戏数据,每次我用Java下载一个他们的JSON文件时,无论文件大小,它都是不完整的 我认为这与我阅读溪流的方式有关: //variables: int data; InputStreamReader isr; PrintWriter pw; //Read from file: while ((data = isr.read()) != -1) { pw.print((char) data); } InputStreamReader来自与API的URL关联的URLCon

我使用战争游戏API访问游戏数据,每次我用Java下载一个他们的JSON文件时,无论文件大小,它都是不完整的

我认为这与我阅读溪流的方式有关:

//variables:
int data;
InputStreamReader isr;
PrintWriter pw;
//Read from file:
while ((data = isr.read()) != -1)
{
pw.print((char) data);
}
InputStreamReader来自与API的URL关联的URLConnection.getInputStream()


那么,如何从流中读取数据而不中断或遇到文件结尾呢?

我使用
org.apache.commons.io.IOUtils
Gson
,这组数据从未让我失望过

    InputStream stream = connection.getInputStream(); // or getErrorStream()
    StringWriter writer = new StringWriter();
    IOUtils.copy(stream, writer, "UTF-8");
    String response = writer.toString();
    Entity entity = new Gson().fromJson(response,  Entity.class);

我将
org.apache.commons.io.IOUtils
Gson
一起使用,这一套从未让我失望过

    InputStream stream = connection.getInputStream(); // or getErrorStream()
    StringWriter writer = new StringWriter();
    IOUtils.copy(stream, writer, "UTF-8");
    String response = writer.toString();
    Entity entity = new Gson().fromJson(response,  Entity.class);

看看BufferedReader。尝试用一个包装InputStreamReader,并通过BufferedReader进行读取。同时,一次只读取一个字符是相当低效的。看看另一种读取方法,该方法使用char[],以便您可以一次读取更多字符。我听取了您的建议,将“while((data=isr.read())!=-1)”更改为“while((data=br.readLine())!=null)”,并使用缓冲读取器包装了我的输入流读取器。但是,唉,我仍然得到不完整的文件。如果你将文件保存在光盘上,它们是否完整?否。PrintWriter pw指向一个已经存在的文件,数据将被随机删除,我已经查看了这些文件,试图找到一个模式,但它在标识符和值(JSON)期间以不确定的长度被删除。运行时返回时没有错误。注意:我已经在浏览器中使用了api,文件已经完成。请看BufferedReader。尝试用一个包装InputStreamReader,并通过BufferedReader进行读取。同时,一次只读取一个字符是相当低效的。看看另一种读取方法,该方法使用char[],以便您可以一次读取更多字符。我听取了您的建议,将“while((data=isr.read())!=-1)”更改为“while((data=br.readLine())!=null)”,并使用缓冲读取器包装了我的输入流读取器。但是,唉,我仍然得到不完整的文件。如果你将文件保存在光盘上,它们是否完整?否。PrintWriter pw指向一个已经存在的文件,数据将被随机删除,我已经查看了这些文件,试图找到一个模式,但它在标识符和值(JSON)期间以不确定的长度被删除。运行时返回时没有错误。注意:我已经在我的浏览器中使用了api,文件已经完成。你能提供一个指向javadoc的链接吗?另外,我使用的是json simple,读取数据没有问题,只是不完整。你能提供一个指向javadoc的链接吗?而且我使用的是json simple,读取数据没有问题,只是不完整。