0

親愛なる私は Android の新機能です。Json に問題があり、ここに私のコードがあります... デバッグします。すべて問題ありませんが、このステートメントに到達すると catch ブロックにジャンプしました

jArray = new JSONObject(result);

そのため、nullが返されます...

public class JSONfunctions {

    public static JSONObject getJSONfromURL(String url){
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        //http post
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpGet httpget = new HttpGet(url);
                HttpResponse response = httpclient.execute(httpget);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

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

      //convert response to string
        try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
        }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }

        try{

            jArray = new JSONObject(result);            
        }catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

        return jArray;
    }
}
4

5 に答える 5

2

JSONObject は JSONArray に変換されないため、これを置き換えます

 jArray = new JSONArray(result);

これはあなたを助けるかもしれません。

于 2012-12-28T12:00:48.903 に答える
0

JSONにはオブジェクトではなく配列が必要だと思います。

試す:

jArray = new JSONArray(result); 

いいえ

jArray = new JSONObject(result); 

次のようにエラーを記録します。

 Log.e("log_tag", "Error parsing data ", e);

問題の内容と場所についてのより詳細な説明が表示されます。

Json 配列 API

于 2012-12-28T11:49:38.367 に答える
0

結果をログアウトしてから解析して、有効なjson文字列かどうかを確認してください。

于 2012-12-28T11:51:49.977 に答える
0

以下に示すように解析します

JSONObject mainJSON = new JSONObject();

    JSONArray jsonMainArr = mainJSON.getJSONArray("result");
    for (int i = 0; i < jsonMainArr.toArray().length; i++) {
        JSONObject childJSONObject = jsonMainArr.getJSONObject(i);
        String CompletionStatus= childJSONObject.getString("CompletionStatus");
        String ContactMobile= childJSONObject.getString("ContactMobile");
    }

これがあなたを助けることを願っています。

于 2012-12-28T12:14:25.390 に答える
0

Sring がこれらの括弧で始まる場合

 [ ]

JSONArrayまたは_

文字列がこれらの括弧で始まる場合は、{}使用する必要がありJSONObjectます。

この地域だと思いますそうでなければ応答が来ない代わりに試してみてください

 HttpGet httpget = new HttpGet(url);

交換

HttpPost post=new HttpPost(url);
于 2012-12-28T11:57:41.850 に答える