2017-12-07 4 views
0

Ich habe folgende Antwort von Post-Anforderung mit HttpURLConnection:Wie erhält man einen bestimmten JSON-Schlüsselwert aus der Antwortanforderung nach der Anfrage in Android?

Beitrag Request Response:

{ 
    "LatestData": [{ 
     "ExtraData": null, 
     "ID": 0, 
     "season": false, 
     "latest": 0, 
     "url": "http://www.awebsite.com/images/12.jpg" 
    }] 
} 

Wie Wert von URL zu bekommen? Ich habe versucht folgende aber Android Studio hält das Geben mir Fehler:

String newURL = sb.getJSONObject("LatestData").getString("url"); 
String newURL = sb.getJSONArray("LatestData").getJSONObject(0).getString("url"); 

Android Studio Fehler:

error: cannot find symbol method getJSONObject(String) 
error: cannot find symbol method getJSONArray(String) 

könnte euch mir helfen, den Wert der URL zu erhalten und lassen Sie mich wissen, was Bibliotheken i importieren müssen android Studio so getsonObject arbeitet Dank

android Code:

if (myURLConnection.getResponseCode() == 200) { 
       br = new BufferedReader(new InputStreamReader(myURLConnection.getInputStream(), "utf-8")); 
       while (true) { 
        line = br.readLine(); 
        if (line != null) { 
         sb.append(line + "\n"); 


         //String newURL = sb.getJSONObject("LatestData").getString("url"); 
         String newURL =sb.getJSONArray("LatestData").getJSONObject(0).getString("url"); 
         mWebView.loadUrl("javascript:MyFunction('" +newURL + "');"); 
        } else { 
         br.close(); 
         return sb.toString(); 
        } 
       } 
      } 
+0

Zuerst müssen Sie Ihre sb in JSONObject konvertieren –

Antwort

1

Sie müssen sb auf eine JSONObject zu Zugriffseigenschaften konvertieren:

JSONOjbect jsonResponse = new JSONObject(new String(sb)); 

und dann:

try { 
    JSONArray jsonArray = jsonResponse.getJSONArray("LatestData"); 
    if (jsonArray != null && jsonArray.length() > 0) { 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject dataOjbect = jsonArray.getJSONObject(i); 
      String url = dataOjbect.getString("url"); 
     } 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

Vielen Dank für Antworten. Nongthonbam Tonthoi Ihr erster Vorschlag, es in jsonobject zu konvertieren, funktionierte auch: JSONObject jsonResponse = neues JSONObject (new String (sb)); Zeichenfolge newURL = jsonResponse.getJSONArray ("LatestData"). GetJSONObject (0) .getString ("url"); – user1788736

1
try { 
      JSONObject jsonObject = new JSONObject(sb); 
      String url = jsonObject.optJSONArray("LatestData").getJSONObject(0).optString("url"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
0

Ihr Ansatz so sein sollte.

try { 
     List<String> urlist = new ArrayList<>(); 
     JSONObject jsonObject = new JSONObject(sb.toString()); 
     JSONArray jsonArray = jsonObject.getJSONArray("LatestData"); 
     for (int count = 0; count<jsonArray.length(); count++){ 
      JSONObject jsonInner = jsonArray.getJSONObject(count); 
      String url = jsonInner.getString("url"); 
      //store your url in some list 
      urlist.add(url); 
     } 

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

Try it loadJSONArray mit

String url = loadJSONArray(sb)..getJSONObject(0).getString("url"); 
0

Können Sie dies versuchen:

StringBuilder sb = new StringBuilder(); 
line = br.readLine(); 
while(line != null){ 
    sb.append(line); 
} 
// if it's fail here then this means there is an issue in parsing JSONObject 
JSONObject jsonObj = new JSONObject(sb.toString());   
JSONArray latestData = jsonObj.getJSONArray("LatestData"); 
JSONObject jsonObject = latestData.getJSONObject(0); 
String url = jsonObject.getString("url"); 

Ebenfalls sehr Retrofit mit Gson verwenden Ich empfehle .. Sie diesen Artikel folgen: http://www.vogella.com/tutorials/Retrofit/article.html

Verwandte Themen