0

JSON を解析して、Android アプリケーションの EditText フィールドに送信しようとしています。最近、発生していたエラーが StringBuilder の内容に起因していることを発見しました。StringBuilder を使用する代わりに、json のサンプルを文字列にハードコーディングし、それを EditText フィールドに送信しました。それはうまく機能し、表示するために探している値を取得します。ただし、ハードコーディングではなく、使用している API にアクセスしてこれを機能させる必要があります。以下は、私の JSON パーサー クラスです。inputStream が閉じられる前に、追加後に stringBuilder の内容を確認する方法はありますか。このようにして、jSon をハードコーディングする代わりに、整理して stringBuilder.toString() に戻すことができます。

package com.apitest.rottentomatoestest;

import java.io.*;
import org.apache.http.*;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.*;

import android.util.Log;

public class JSONParser {

static InputStream inputStream = null;
static JSONObject jObject = null;
static String jSon = "";

public JSONParser() {
    // TODO Auto-generated constructor stub
}

public JSONObject getJSONFromUrl(String url){

    //Make HTTP Request
    try {
        //defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        inputStream = httpEntity.getContent();

    } catch (UnsupportedEncodingException e){
        e.printStackTrace();
    } catch (ClientProtocolException e){
        e.printStackTrace();
    }catch (IOException e){
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
        StringBuilder stringBuilder = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null){
            stringBuilder.append(line + "\n");
        }
        inputStream.close();

        jSon = "{\"cast\":[{\"id\":\"162661723\",\"name\":\"Snoop Dogg\"}]}";

    } catch (Exception e){
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    //try to parse the string to JSON Object
    try {
        jObject = new JSONObject(jSon);

    } catch (JSONException e){
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    //return JSON String
    return jObject;
}

}

4

3 に答える 3

0

代わりにこれを試してください:

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
于 2012-08-17T00:29:44.600 に答える
0

org.json.JSONObjectJSON を使用可能な Java オブジェクトに解析するために使用できます。

于 2012-08-17T09:19:18.370 に答える
0

以下を使用できます。

Log.d("JSON Contents", stringBuilder.toString());

inputStream を閉じる直前。

更新: この596 Service Not Foundメッセージは、多くの場合、 URL が正しくないために発生します。

于 2012-08-17T00:02:24.917 に答える