我从一个URL收到回复,我将其存储到字符串中。响应采用JSON格式,大约1800行。当我使用String来读取数据时,大约有800行,就像这样..
{"carrierFsCode":"UA","flightNumber":"935","se...
最初我虽然String可能无法处理它,但我尝试使用StringBuffer设置最小容量,但我遇到了同样的问题。这是我遇到问题的部分。
String str = "";
while (null != (str = br.readLine())) {
temp = str;
}
为什么会发生这种情况的任何建议。
PS:网址很好。当我尝试将其存储到文件中时,我获得了整个JSON。
答案 0 :(得分:4)
我猜您使用调试器观察结果时会看到尾随点。这不是字符串限制,这是调试器功能。
如果要在调试器中看到真正长的字符串,请使用表达式视图并键入System.out.println(mystring)
(其中mystring
是字符串变量的名称)。然后在控制台上查看结果。
BUT。
似乎你可能走错了路。 String将数据存储在受Integer.MAX_VALUE
限制的数组中。这个数字很高,但在某些情况下你可以达到极限。此外,这种方式在性能和内存消耗方面非常无效。通常,您会读取JSON以解析它并将其转换为对象。所以,使用stream:将输入流发送到JSON解析器。解析将在从流中读取时完成,整个JSON有望不会作为一个巨大的块存储在内存中。
答案 1 :(得分:0)
以下代码段会将所有行附加到StringBuilder
,然后您可以调用.toString()
来获取数据。
StringBuilder sb = new StringBuilder();
String str = "";
while (null != (str = br.readLine())) {
sb.append(str);
}