2017-05-18 18 views
0

エラー:値渡しました:( "連絡先")が見つかりません。 与えられたコードは配列リストのjson形式のデータを取得することです。私はアンドロイドスタジオでこの作業をしています。私は以下のコードを実行すると、私はエラーが "連絡先" not found.i objと他の宣言された変数を変更しているが、同じ問題に直面しているjson形式のデータを見ることができます。 これを解決するための提案はありますか?
はここのコードです:配列リストにjson応答を格納します

private String TAG = MainActivity.class.getSimpleName(); 

private ProgressDialog pDialog; 
private ListView lv; 

// URL to get contacts JSON 
private static String url = "http://services.groupkt.com/state/get/IND/all"; 

List<JsonBean> listobj = new ArrayList<>(); 

// ArrayList<HashMap<String, String>> contactList; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //lv = (ListView) findViewById(R.id.list); 

    new GetContacts().execute(); 
} 

private class GetContacts extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setMessage("Please wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     Httphanlder sh = new Httphanlder(); 

     // Making a request to url and getting response 
     String jsonStr = sh.makeServiceCall(url); 

     Log.e(TAG, "Response from url: " + jsonStr); 

     if (jsonStr != null) { 

      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 

       // Getting JSON Array node 
       JSONArray contacts = jsonObj.getJSONArray("contacts"); 

       JsonBean jsonbeanobj=new JsonBean(); 

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

        jsonbeanobj.setCountry(c.getString("country")); 
        jsonbeanobj.setName(c.getString("name")); 
        jsonbeanobj.setAbbr(c.getString("abbr")); 
        jsonbeanobj.setArea(c.getString("area")); 
        jsonbeanobj.setCapital(c.getString("capital")); 

        listobj.add(jsonbeanobj); 
        } 
      } catch (final JSONException e) { 
       Log.e(TAG, "Json parsing error: " + e.getMessage()); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Json parsing error: " + e.getMessage(), 
           Toast.LENGTH_LONG) 
           .show(); 
        } 
       }); 

      } 
     } else { 
      Log.e(TAG, "Couldn't get json from server."); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), 
          "Couldn't get json from server. Check LogCat for possible errors!", 
          Toast.LENGTH_LONG) 
          .show(); 
       } 
      }); 

     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 

    } 

} 

答えて

0

あなたはJSON配列「結果」

更新行を使用する必要が

// Getting JSON Array node 
JSONArray contacts = jsonObj.getJSONArray("result"); 
+0

まだ同じ問題に直面して、JSON解析エラー:結果の値がありません –

+0

plz post logcatエラースタックトレース – Dhanumjay

0

これは、その問題への答えではないかもしれませんが、私はJSONObject..etcを使っている人を見ると、通常、彼らはプログラミングに新しいです。私は同じことをしていました:)

GsonまたはJackson Libraryを見てください.jsonをJavaオブジェクトにデシリアライズします。

は、その例では、あなたがこの使用ジャクソンを行うことができます。

List contacts = Array.asList(mapper.readValue(json, Contact[].class)); 

public class Contact { 
    @JsonCreator 
    public Contact(@JsonProperty("name") name...etc) 
     this.name = name; 
    } 
} 
関連する問題