2017-09-09 1 views
0

Ceci est ma première question sur StackOverflow, donc désolé pour une mauvaise représentation de la question.Comment puis-je obtenir des données à partir de JSONObject null?

est ici JSON dans logcat:

I/Result is: null{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],"base":"stations","main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},"visibility":10000,"wind":{"speed":4.1,"deg":80},"clouds":{"all":90},"dt":1485789600,"sys":{"type":1,"id":5091,"message":0.0103,"country":"GB","sunrise":1485762037,"sunset":1485794875},"id":2643743,"name":"London","cod":200} 

Voici mon code:

public class MainActivity extends AppCompatActivity { 
    String weather,id,result; 

    public class DownloadTask extends AsyncTask<String,Void,String>{ 

     @Override 
     protected String doInBackground(String... urls) { 
      try { 
       URL url = new URL(urls[0]); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
       int data = inputStreamReader.read(); 

       while(data != -1){ 
        char count = (char) data; 
        result += count; 
        data = inputStreamReader.read(); 
       } 

       return result; 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      try { 
       JSONObject jsonObject = new JSONObject(result); 

       String res = jsonObject.getString("coord"); 

       Log.i("Result is ",res); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Toast.makeText(this, id, Toast.LENGTH_SHORT).show(); 

     DownloadTask task = new DownloadTask(); 
     task.execute("http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1"); 

    } 
} 

est ici Exception:

W/System.err: org.json.JSONException : Valeur null du type org.json.JSONObject $ 1 ne peut pas être converti en JSONObject

+0

Impossible de comprendre le titre Comment puis-je obtenir des données à partir de JSONObject null? –

+3

Votre JSON n'est pas valide en raison de 'null'. –

Répondre

5

Initialiser votre cordage résultat avec vide

String result=""; 

Votre chaîne de résultat est variable de classe et toutes les cordes sont par défaut initialize avec =null valeur

ci-dessous ligne ajouter à null+yourResponse

result += count;