String有大小吗?

时间:2014-09-30 06:56:24

标签: java string

我从一个URL收到回复,我将其存储到字符串中。响应采用JSON格式,大约1800行。当我使用String来读取数据时,大约有800行,就像这样..

{"carrierFsCode":"UA","flightNumber":"935","se...

最初我虽然String可能无法处理它,但我尝试使用StringBuffer设置最小容量,但我遇到了同样的问题。这是我遇到问题的部分。

   String str = "";
   while (null != (str = br.readLine())) {
        temp = str;
   }

为什么会发生这种情况的任何建议。

PS:网址很好。当我尝试将其存储到文件中时,我获得了整个JSON。

2 个答案:

答案 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);
}