2016-07-04 5 views
0

Es gibt ein Problem, wenn ich die einzelnen Elemente aus dem JSON abrufe. wie: "t": "SBIN"Kann mir jemand bei diesem JSON Parsing helfen?

Die JSON-URL lautet wie folgt: http://finance.google.com/finance/info?q=BSE:SBIN

und die anderen Ressourcen sind wie folgt:

public class RefreshStock extends AsyncTask<String, String, List<StockModel>> { 

    @Override 
    protected List<StockModel> doInBackground(String... params) { 

     try { 
      url = new URL(params[0]); 

      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 

      inputStream = connection.getInputStream(); 

      bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 

      stringBuffer = new StringBuffer(); 

      String line = ""; 

      while ((line = bufferedReader.readLine()) != null) 
       stringBuffer.append(line + "\n"); 

      String data = stringBuffer.toString(); 

      return parseJSON(data); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (connection != null) 
       connection.disconnect(); 
      try { 
       if (bufferedReader != null) 
        bufferedReader.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    private List<StockModel> parseJSON(String json) { 

     List<StockModel> stockModelList = new ArrayList<>(); 

     json = json.substring(3); 
     //textView.setText(""+json); 

     try { 

      StockModel stockModel = new StockModel(); 
      JSONObject parentObject = new JSONObject(); 
      JSONArray jsonArray = parentObject.getJSONArray(json); 

       JSONObject childObject = jsonArray.getJSONObject(0); 
       String stockId = childObject.getString("id"); 
       String stockName = childObject.getString("t"); 
       String stockRate = childObject.getString("l"); 
       String stockChange = childObject.getString("c"); 
       String stockChangePercent = childObject.getString("cp"); 

      Toast.makeText(getApplicationContext(),""+stockRate, Toast.LENGTH_LONG).show(); 

      stockModel.setId(stockId); 
      stockModel.setT(stockName); 
      stockModel.setL(stockRate); 
      stockModel.setC(stockChange); 
      stockModel.setCp(stockChangePercent); 
      stockModelList.add(stockModel); 

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

     return stockModelList; 
    } 

    protected void onPostExecute(List<StockModel> result) { 
     super.onPostExecute(result); 

     StockAdapter adapter = new StockAdapter(getApplicationContext(), R.layout.listrow, result); 
     lvStock.setAdapter(adapter); 
    } 
} 

Die logcat Nachricht lautet wie folgt:

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ org.json.JSONException: No value for [ 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ { 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ "id": "13564339" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"t" : "SBIN" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"e" : "NSE" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"l" : "222.90" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"l_fix" : "222.90" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"l_cur" : "Rs.222.90" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"s": "0" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"ltt":"3:55PM GMT+5:30" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"lt" : "Jul 4, 3:55PM GMT+5:30" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"lt_dts" : "2016-07-04T15:55:45Z" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"c" : "+3.30" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"c_fix" : "3.30" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"cp" : "1.50" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"cp_fix" : "1.50" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"ccol" : "chg" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ,"pcls_fix" : "219.6" 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ } 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ ] 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ [ 07-04 
10:49:42.667 11270:11321 W/System.err ] 
      at org.json.JSONObject.get(JSONObject.java:389) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at org.json.JSONObject.getJSONArray(JSONObject.java:584) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at org.example.km.http2json.MainActivity$RefreshStock.parseJSON(MainActivity.java:117) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at org.example.km.http2json.MainActivity$RefreshStock.doInBackground(MainActivity.java:87) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at org.example.km.http2json.MainActivity$RefreshStock.doInBackground(MainActivity.java:63) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 

07-04 10:49:42.667 11270-11321/org.example.km.http2json W/System.err﹕ at java.lang.Thread.run(Thread.java:818) 

Danke: P

+0

Wie können Sie die Daten erhalten ?. Ich versuche Ihre Google Finanzen Link, aber es gibt Fehler 400 zurück. Und ich habe auch gelesen, dass [Google Finanzen API ist jetzt geschlossen] (https://developers.google.com/finance/). –

+0

Die API, die nicht mehr als GOOGLE FINANCE-Dienst gilt. Klicken Sie einfach auf den obigen Link. –

+0

wow man .. bitte benehmen Sie sich. Kein Geschrei bitte. –

Antwort

0

Ihre JSON-Antwort ist nicht gültig

// [ 
{ 
"id": "13564339" 
,"t" : "SBIN" 
,"e" : "NSE" 
,"l" : "222.90" 
,"l_fix" : "222.90" 
,"l_cur" : "Rs.222.90" 
,"s": "0" 
,"ltt":"3:55PM GMT+5:30" 
,"lt" : "Jul 4, 3:55PM GMT+5:30" 
,"lt_dts" : "2016-07-04T15:55:45Z" 
,"c" : "+3.30" 
,"c_fix" : "3.30" 
,"cp" : "1.50" 
,"cp_fix" : "1.50" 
,"ccol" : "chg" 
,"pcls_fix" : "219.6" 
} 
] 

to 

[ 
{ 
"id": "13564339" 
,"t" : "SBIN" 
,"e" : "NSE" 
,"l" : "222.90" 
,"l_fix" : "222.90" 
,"l_cur" : "Rs.222.90" 
,"s": "0" 
,"ltt":"3:55PM GMT+5:30" 
,"lt" : "Jul 4, 3:55PM GMT+5:30" 
,"lt_dts" : "2016-07-04T15:55:45Z" 
,"c" : "+3.30" 
,"c_fix" : "3.30" 
,"cp" : "1.50" 
,"cp_fix" : "1.50" 
,"ccol" : "chg" 
,"pcls_fix" : "219.6" 
} 
] 
+0

Wenn Sie gesehen haben, ich hatte die JSON online überprüft. Und übrigens wird der JSON von Google geholt. Auch ich habe die beiden Schrägstriche entfernt mit der Teilstring-Methode über –

+0

können Sie versuchen, indem Sie http://www.jsoneditoronline.org/ –

+0

und wenn Ihre Antwort erfolgreich geparst wird als wir in Android analysieren können –

0

Fehler in Ihrem json ersetzen.

Entfernen // Schrägstrich Anmelden JSON

+0

dada siehe den obigen Code jsonstring (3); Bereits getan, dass: P –

+0

JSONArray jArray = neue JSONArray (JSON); für (int i = 0; i

Verwandte Themen