2013-07-25 13 views
5

jsonで作業中に例外が発生しています。私はこれらのコードorg.json.JSONObjectをJSONArrayに変換できません

  String TAG_user_detail = "user_details"; 
       String TAG_user_id = "user_id"; 
      String TAG_user_name = "user_name"; 
      String TAG_user_phone = "user_phone"; 
      String TAG_ref_id = "ref_id"; 
      JSONArray user_detail_jsonarray = null; 
      JSONParser jParser = new JSONParser(); 

      // getting JSON string from URL 
      JSONObject json = jParser.getJSONFromUrl(url); 
      try { 
       // Getting Array of Contacts 
       user_detail_jsonarray = json.getJSONArray(TAG_user_detail); 

       // looping through All Contacts 
       for(int i = 0; i < user_detail_jsonarray.length(); i++){ 
        JSONObject c = user_detail_jsonarray.getJSONObject(i); 

        // Storing each json item in variable 
        int id = c.getInt(TAG_user_id); 
        System.out.println("user id from json"+id); 

        String name_fromjson = c.getString(TAG_user_name); 
        System.out.println("user name from json"+name_fromjson); 

        int phone_no_fromjson = c.getInt(TAG_user_phone); 
        System.out.println("user phone from json"+phone_no_fromjson); 

        int ref_id_fromjson = c.getInt(TAG_ref_id); 
        System.out.println("user ref id from json"+ref_id_fromjson); 





       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

で自分のデータを取得していますが、私はcountiniouslyこの行で例外を取得しています

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.os.AsyncTask; 
import android.util.Log; 

public class JSONParser { 
static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 

    // constructor 
    public JSONParser() { 

    } 

    public JSONObject getJSONFromUrl(String url) { 

     // Making HTTP request 
     try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

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

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

     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(); 
      json = sb.toString(); 
      System.out.println(" value in json sting"+json); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
      Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+json); 
      System.out.println(" error is here"); 

     } 

     // return JSON String 
     return jObj; 

    } 

    } 

に従うように私JSONPresrクラスは

user_detail_jsonarray = json.getJSONArray(TAG_user_detail); 

マイステークトレースメッセージはようです

 {"ref_id":1295,"user_name":"chand","user_phone":"9620085675","user_id":"1"} at user_details of type org.json.JSONObject cannot be converted to JSONArray 

私は多くのリンクを試みましたが、残念ながら私は私の結果を得ることができません。この問題を解決するために私の身体を助けてください。先にありがとうございました

+2

配列ではなく 'TAG_user_detail'のJSONObjectを取得しています –

+0

いくつかのコードを投稿してください – DJhon

+0

どのコードですか?あなたの完全なJSONを入れてください。 –

答えて

21

を表します。それはしないでください。

JSON応答を読み取るコードは次のとおりです。

String json = "Assuming that here is your JSON response"; 
try { 
    JSONObject parentObject = new JSONObject(json); 
    JSONObject userDetails = parentObject.getJSONObject("user_details"); 

    //And then read attributes like    
    String name = userDetails.getString("user_name"); 
    String phone = userDetails.getString("user_phone"); 
    String id = userDetails.getString("re‌​f_id"); 

} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

上記のコードは{"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","re‌​f_id":6386}} JSONです。

+0

親愛なるPankaj私はちょうど返品の種類を変更することによって私の問題をslovedし、あなたが助けて.... \ – DJhon

+0

申し訳ありませんが、男...私は非常識な状態に直面している..しかし、私はあなたをupvoted – DJhon

+0

ねえ...すべての最高の –

3

jsondataはjsonオブジェクト形式です。この行は、あなたが不可能なJSONObject to JSONArrayを変換しようとしているため、この例外org.json.JSONObject cannot be converted to JSONArray を取得している例外

org.json.JSONObject cannot be converted to JSONArray 

から学ぶ

JsonObject user_detail_jsonobj = json.getJSONObject(TAG_user_detail); 
7

を変更します。

{は、JSONオブジェクトノード

[を表しますが、JSON配列にJSONオブジェクトを変換しようとしているエラーからその明確なJSON配列ノードに

+0

を追加しました...ここにいくつかのコードを掲示してくださいよ,,,,,それは私のために完全に役立つでしょう – DJhon

+0

@BlueGreen JSONObjectを解析してみてください! –

+1

@BlueGreenは、使用するよりもユーザー名を取得する場合と同じです。String name_fromjson =(String)json.get( "user_name");ループやjsonarrayの必要はありません! –

関連する問題