2017-05-18 2 views
0

Fehler: Wert übergeben: ("Kontakt") nicht gefunden. angegebenen Code ist JSON-Format Daten in Array-Liste zu bekommen.Ich mache diese Aufgabe in Android Studio. Wenn ich den folgenden Code ausführe, könnte ich die JSON-Formatdaten mit dem Fehler sehen, dass "contact" nicht gefunden wird. Ich habe das mit obj und anderen deklarierten Variablen geändert, aber immer noch mit demselben Problem konfrontiert. irgendein Vorschlag, um das zu lösen?
hier ist der Code:json Antwort in Array-Liste speichern

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(); 

    } 

} 

Antwort

0

Sie benötigen json Array "Ergebnis" verwenden

Update diese Zeile

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

noch gleiches Problem, Json Parsing Fehler: Kein Wert für Ergebnis –

+0

PLZ nach Logcat Fehler Stack Trace – Dhanumjay

0

Dies könnte nicht eine Antwort auf dieses Problem sein, aber in der Regel, wenn ich die Menschen sehen, mit JSONObject..etc sie sind neu in die Programmierung. Ich habe das gleiche gemacht :)

Werfen Sie einen Blick auf Gson oder Jackson Library, wird es das JSer zu einem Java-Objekt für Sie deserialisieren.

dann in diesem Beispiel können Sie dies mit Jackson tun:

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

public class Contact { 
    @JsonCreator 
    public Contact(@JsonProperty("name") name...etc) 
     this.name = name; 
    } 
}