-1

今、私はAndroidアプリケーションをやっています。現在、jsonの解析で問題が発生しています。jsonのページ構造は次のようになっています。

[
{

"id":3,

"name":"dd"

},

{

"id":4,

"name":"ggg"

}

]

次のコードで試してみました。

URL website = new URL("url");
InputStream in = website.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
while ((line = reader.readLine()) != null) {
JSONArray ary=new JSONArray(line);
}

しかし、例外が発生しています。すべてのデータが異なる行にあるためです。同じ行にある場合[{"id":3、 "name": "dd"}、{"id":4、 "name": " ggg "}]それなら私は簡単にできます...しかし、それらはすべてのデータを別々の行に提供します..それが問題です..plsは私を友達に助けてくれます

4

3 に答える 3

2

最後に私は得た..

    public void parseMovie(InputStream json) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(json));
        StringBuilder sb = new StringBuilder();
        String line = reader.readLine();
        while (line != null) {
            sb.append(line);
            line = reader.readLine();
        }
        reader.close();
        JSONArray jsonReply = new JSONArray(sb.toString()); 

        System.out.println("length is"+jsonReply.length());
        ArrayList<String> id=new ArrayList<String>();
        for (int i = 0; i < jsonReply.length(); i++) {
            JSONObject jsonMovie = jsonReply.getJSONObject(0); 


            id.add(jsonMovie.getString("id"));

        }


    }
于 2012-04-09T06:20:26.187 に答える
0

最初にデータ全体を取得し、次にそれを解析します。

StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
    sb.append(line);
}
JSONArray ary=new JSONArray(sb.toString());
于 2012-04-07T12:47:04.947 に答える
0

これを試して。

StringBuilder builder = new StringBuilder();
            HttpClient client = new DefaultHttpClient();

            HttpGet httpGet = new HttpGet("url");
            try {
                HttpResponse response = client.execute(httpGet);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                if (statusCode == 200) {
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(content));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        builder.append(line);
                    }
                } else {
                    Log.v("in else", "Failed to download file");
                }
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.v("Builder >>", builder.toString());
    String response=builder.toString();
于 2012-04-07T13:08:01.043 に答える