마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Ajax에서 Json 파싱 문제

0 추천
<!DOCTYPE html>

<html>
 <head>
  <meta charset="utf-8"/>
  <title>JSON parsing</title>
 
  <style> </style>
 
 <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
 
  <script>
    $(function(){
    $.ajax({
     url: "http://localhost:8080/weather/ForecastGrib.json",
     dataType: "json",
     success: function(data){
       $.each(data, function(index, item){
        alert(item.key + ":" +item.value + ":" +item.age);
       })
     }
    })
   })
  </script>

   </head>
 <body>
    <p>test<p>
 </body>
</html>

이렇게 하면

[{"key":"11", "value" : "lang", "age" : "25"}
,{"key":"22", "value" : "math", "age" : "22"}
,{"key":"37", "value" : "engl", "age" : "28"}]

이런 형식의 Json파일은 불러 올 수 있겠는데 기상청 API에서 가져온 json파일은

{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items":{"item":
[{"baseDate":20161202,"baseTime":"0900","category":"LGT","nx":53,"ny":38,"obsrValue":0}
,{"baseDate":20161202,"baseTime":"0900","category":"PTY","nx":53,"ny":38,"obsrValue":0}
,{"baseDate":20161202,"baseTime":"0900","category":"REH","nx":53,"ny":38,"obsrValue":55}
,{"baseDate":20161202,"baseTime":"0900","category":"VEC","nx":53,"ny":38,"obsrValue":13}]
},"numOfRows":8,"pageNo":1,"totalCount":10}}}

이런 식으로 시작이 [{ 아니라  {"response"식으로 시작해서 어떻게 파일을 가져와야 하는지 모르겠습니다. body찾고 item찾은 다음 그 뒤에부터 읽도록 하는 형식으로 하는거 같은데 감을 못잡겠네요. 해결방안 알려주시면 감사하겠습니다. ajax말고 다른 방법으로 알려주셔도 됩니다!
App연어 (250 포인트) 님이 2016년 12월 8일 질문
App연어님이 2016년 12월 8일 수정

1개의 답변

+2 추천
 
채택된 답변

안녕하세요

JSON 파싱은 구조를 머릿속에 그려보시거나 종이에 그려보시면서 하시면 되세요

제가 안드로이드 스튜디오에서 허접하지만 뽑아내는 로직 해봤어요

아니면 http://json.parser.online.fr/  이 사이트 가보시면 잘 정리해줍니다

try {
    
   JSONArray jsonArray = json.getJSONObject("response").getJSONObject("body")
                                              .getJSONObject("items").getJSONArray("item");

    for(int i = 0; i < jsonArray.length(); i++){
        Log.e("데이터 뽑아보자 baseDate >>", jsonArray.getJSONObject(i).getString("baseDate"));
        Log.e("데이터 뽑아보자 baseTime >>", jsonArray.getJSONObject(i).getString("baseTime"));
        Log.e("데이터 뽑아보자 category >>", jsonArray.getJSONObject(i).getString("category"));
        Log.e("데이터 뽑아보자 nx >>", jsonArray.getJSONObject(i).getString("nx"));
        Log.e("데이터 뽑아보자 ny >>", jsonArray.getJSONObject(i).getString("ny"));
        Log.e("데이터 뽑아보자 obsrValue >>", jsonArray.getJSONObject(i).getString("obsrValue"));
    }


}catch (Exception e){

}

 

히로시 (10,800 포인트) 님이 2016년 12월 8일 답변
App연어님이 2017년 2월 8일 채택됨
...