1

サーバーから回答を得て、それを に変換しようとしましたJSONObject。今私はこのコードを持っています

private JSONObject sendData(ArrayList<NameValuePair> data, String actionname)

{

    // 1) Connect via HTTP. 2) Encode data. 3) Send data.
    try

    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new      
        HttpPost(actionname);
        httppost.setEntity(new UrlEncodedFormEntity(data));
        HttpResponse response = httpclient.execute(httppost);
    //   Log.i("postData", response.getStatusLine().toString());
        InputStream is = response.getEntity().getContent();
        String result = convertStreamToString(is);

     //   JSONArray jArr = new JSONArray (result);
       // int eventID = jArr.getJSONObject(0).getInt("eventID");

        JSONObject jObject = new JSONObject(result);
        return jObject;

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error:  "+e.toString());
    }

    return null;  

}

result文字列変数にはこれがあります

{"status":{"code":404,"text":"Not Found"},"content":"ユーザー認証失敗"}

しかし、コードの文字列ではJSONObject jObject = new JSONObject(result);、 return に移動しnullます。=(( を作成しようとしましたが、から作成JSONArrayできるエクステンションが返されます。JSONARRAYJSONObject

4

2 に答える 2

1

次のようにresult作成できます。JSONArray

JSONArray finalResult = new JSONArray(new JSONTokener(result));

を取得したらJSONArray、ループして詳細を取得できます。次のようになります。

for (int i = 0; i < finalResult.length(); i++) {
    JSONObject message = finalResult.getJSONObject(i);
    String content= message.getString("content");
    ...
    ...
}
于 2012-06-12T12:22:11.877 に答える
0

問題は解決しましたが、なぜそうなるのかわかりません。私はOOPがあまり得意ではないかもしれません。そこで、sendDataメソッドを持つJSONHandlerクラスのプロパティとしてJSONObjectjObjectを作成します。そしてそれは仕事になりました。誰かがなぜそうするのか説明してくれたら嬉しいです。

于 2012-06-12T13:18:31.177 に答える