0

我正在通过android中的php查询数据库。这是我的相关代码

String result = null;
InputStream is = null;
StringBuilder sb = null;

is = entity.getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
   sb.append(line + "\n");
}
is.close();
result = sb.toString();    
JSONArray jArray = new JSONArray(result);

这是我要解析的链接和返回的数据。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522%2C151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyCX8PnG_dSJvCMmQPN1Zjbpi_RcokyiOss

一切都很顺利,直到最后一个声明。当我尝试打印出结果的长度时,它的长度是正确的。但是,如果我尝试使用打印结果

Log.e ("ERROR", result);

和 adb logcat 查看输出,它被截断了。因此,如果将截断的字符串结果传递给 JSONArray,它肯定会崩溃。它总是在“Pyrmont Bay Wh”之后被截断,它比返回值低了大约 4048 个字符。所以猜我的问题是为什么变量“结果”被截断。谢谢

4

1 回答 1

0

Logcat 截断长字符串。

$ adb logcat -g
/dev/log/main: ring buffer is 64Kb (63Kb consumed), max entry is 5120b, max payload is 4076b

您可以做的一件事是按照此 SO 帖子中的建议将字符串拆分为可打印的块:

    int maxLogSize = 1000;
    for(int i = 0; i <= veryLongString.length() / maxLogSize; i++) {
        int start = i * maxLogSize;
        int end = (i+1) * maxLogSize;
        end = end > veryLongString.length() ? veryLongString.length() : end;
        Log.v(TAG, veryLongString.substring(start, end));
    }
于 2012-11-16T04:06:25.743 回答