2016-07-20 2 views
-1

JSON 파일 내의 필드에서 특정 값을 가져 오려고합니다. 이것은 JSON 파일로 작업 한 첫 번째 시간이므로 제대로 수행하는지 잘 모르겠습니다.JSON에서 특정 값을 얻으려면 어떻게해야합니까?

이 블록은 날씨 웹 사이트에서 JSON을 가져 와서 JSON을 문자열로 반환합니다. 이 문자열은 아래에서 사용됩니다. 안타깝게도 Android Studio에서이 앱을 실행하고 로그를 통해 로그 할 때마다 weather에 값이 없다고 끊임없이 말합니다. 내가 할 노력하고있어

protected void onPostExecute(String response) { 
    if(response == null) { 
     response = "THERE WAS AN ERROR"; 
    } 

    progressBar.setVisibility(View.GONE); 
    Log.i("INFO", response); 
    responseView.setText(response); 

    // TODO: check this.exception 
    // TODO: do something with the feed 

    try { 
     JSONObject object = (JSONObject) new JSONTokener(response).nextValue(); 
     String weather = object.getString("weather"); 
     Toast.makeText(MyActivity.this, "There is rain", Toast.LENGTH_SHORT).show(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

weather 섹션

Here 내가로부터 구문 분석하는 데 노력하고있어 JSON 링크는 정보를 잡아입니다. 이 텍스트 상자에는 JSON 응답에 너무 많은 링크가있어 여기에 게시 할 수 있다고 생각했습니다. 나는 무슨 일이 일어나고 있는지 알아 내려고 노력하고 있는데 도움이된다면 크게 감사 할 것입니다.

+0

당신은'JSONObject object = new JSONObject (response)'를 사용하려고 시도 했습니까? –

+0

그래, 방금 코드를 수정했다. JSONObject 객체 = 새 JSONObject (응답); 문자열 날짜 = 개체입니다.getString ("weather"); 같은 일은 날씨에 가치가 없습니다. –

답변

2

response을 인쇄하여 정확하게 JSON인지 여부를 확인할 수 있습니다.

JSON 문자열을 올바르게 가져 오는 것으로 가정합니다.

JSONObject object = new JSONObject(response); 
String weather = object.getString("weather"); 

그러나, JSON이 얻은 경우 정확히 weather 문자열이 없기 때문에 당신의 response, 위의 코드가 작동하지 않는 것입니다. 루트는 responsecurrent_observation 만 포함합니다.

weather이 무엇인지 알아 보려면 current_observation 아래에있는 코드를 사용해야합니다.

JSONObject object = new JSONObject(response); 
JSONObject current_obs = object.getJSONObject("current_observation"); 
String weather = current_obs.getString("weather"); // Clear 
+0

고마워요. 이것은 내가 찾고 있었던 바로 그 것이었다. –

1
JSONObject object = (JSONObject) new JsonObject(responseString); 
String weather = object.getString("weather"); 
0

먼저 당신은 문자열의 응답을 얻을 필요가있다. 이제 응답별로 json 구문 분석을 시작하십시오. OR json 파싱에는 Gson 클래스도 사용할 수 있습니다. 된 JSONObject에서

가져 오기 JSON 값 :

{"weather":"sunny"} 

코드가 된 JSONObject를 구문 분석합니다. JSONArray에서

JSONObject object = new JsonObject(response); 
String weather= object.getString("weather"); 

가져 오기 JSON 값 :

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...] 

코드는 JsonArray를 구문 분석합니다.

JSONArray jsonarray = new JSONArray(response); 
for (int i = 0; i < jsonarray.length(); i++) { 
    JSONObject jsonobject = jsonarray.getJSONObject(i); 
    String name = jsonobject.getString("name"); 
    String url = jsonobject.getString("url"); 
} 

희망 하시겠습니까?

관련 문제