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

あなたができることの1つは、この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 に答える