2016-10-27 4 views
0

저는 JSON을 처음 사용합니다. 도움이 필요해. 내 안드로이드 스튜디오에서 내 jsonobject가 NULL이라는 것을 계속 알려줍니다. 나는 jsonarray를 구문 분석하여 listview에 표시 할 수있다. 하지만 내가 그것을 표시 한 페이지를 클릭하면 내 응용 프로그램이 다운됩니다. 오류 포인팅 여기 게시물android jsonObject Null 포인터 예외

Bundle intent=getIntent().getExtras(); 
    if(intent !=null) { 
     json_string = intent.getString("json_data"); 

     json_string = getIntent().getExtras().getString("json_data"); 
    } 

try { 
      jsonObject = new JSONObject(json_string); 
      jsonArray = jsonObject.getJSONArray("server_response"); 
      int count = 0; 
      String team1, score1, team2, score2, Type; 

      while (count < jsonArray.length()) { 
       JSONObject JO = jsonArray.getJSONObject(count); 
       team1 = JO.getString("team1"); 
       score1 = JO.getString("score1"); 
       team2 = JO.getString("team2"); 
       score2 = JO.getString("score2"); 
       Type = JO.getString("Type"); 
       Downloader downloader = new Downloader(team1, score1, team2, score2, Type); 
       gamesAdapter.add(downloader); 

       count++; 
      } 


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

} 

가 { 된 JSONObject = 새로운 된 JSONObject는 (json_string) 보는 것이

파서

class BgTask extends AsyncTask<Void, Void, String> { 
    String json_url; 

    @Override 
    protected void onPreExecute() { 
     json_url = "http://10.0.2.2/result/hehe.php"; 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     try { 
      URL url = new URL(json_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
      InputStream inputstream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputstream)); 
      StringBuilder stringBuilder = new StringBuilder(); 
      while ((JSON_STRING = bufferedReader.readLine()) != null) { 
       stringBuilder.append(JSON_STRING + "\n"); 
      } 

      bufferedReader.close(); 
      inputstream.close(); 
      httpURLConnection.disconnect(); 
      return stringBuilder.toString().trim(); 

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

     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     json_string = result; 
    } 
} 

public void publishGame(View view) 
{ 
    if(json_string == null) 
    { 
     Toast.makeText(getApplicationContext(), "Get Data First",Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     Intent intent = new Intent(this, Games.class); 
     intent.putExtra("json_data", json_string); 
     startActivity(intent); 
    } 
} 

} 코드;

+0

String ("json_data")을 어떻게 받습니까? 나는 편집 된 각하 – Shuddh

+0

에 대한 코드를 볼 수 없습니다. 나는 수신 코드 – orange

+0

의 초기화를 게시했다. 의도 intent = getIntent(); String s = intent.getStringExtra ("json_data", 0); – Shuddh

답변

1

유효하지 않은 json이 아닌 "json_data"에서 JSONObject으로 구문 분석하려고하기 때문에 오류가 발생했습니다. 아마도에 json_data라는 서버 응답이 있습니다. String 유형의 서버 응답은 String literal을 JSONObject constructor으로 전달하는 대신 variable을 전달해야합니다.

+0

죄송합니다. json_string이 아닌 "json_data" – orange