프로그래밍/Android

[Android] 경기지역화폐 지도 만들기 - 2

흔한티벳여우 2020. 8. 5. 15:23
반응형

지난 포스트

지난 시간에는 경기도의 지역화폐 가맹점 데이터를 습득하기 위해 공공데이터포탈에서 가입 그리고 인증키를 발급받았다.

 

이번 포스트

이번 포스트에서는 Android Studio를 이용하여 프로젝트를 생성하고, OpenAPI에서 사용하는 데이터를 이용하기 위한 데이터 클래스를 만들도록하겠다.

 

이제 Android Studio를 이용하여 프로젝트를 생성하도록 하자.

Empty Activity에 kotlin으로 적용하고 sdk버전은 7.0으로 셋팅하자.

 

컴파일도 해보고 실행도 시켜서 잘돌아가는지 확인하자. 뭔가 잘 안된다면 열심히 검색...

큰 문제는 아닐것이다. 대부분 SDK가 설치가 안되었다거나 에뮬레이터 버전 문제가 대부분이다.

 

이제 우리가 요청한 URL을 통해서 데이터를 받아야 하는데 일단 어떤 데이터가 오는지 확인해보자. 

일단 지난시간에 보았던 공공데이터포탈을 통해서 rest api에 어떤 변수를 줘야하고 무엇이 날라오는지 확인해보자.

 

기본인자

변수명 타입 설명 설명
KEY STRING 인증키 기본값 : sample key
Type STRING 호출 문서(xml, json) 기본값 : xml
pIndex INTEGER 페이지 위치 기본값 : 1(sample key는 1 고정)
pSize INTEGER 페이지 당 요청 숫자 기본값 : 100(sample key는 5 고정)

요청인자

변수명 타입 설명
SIGUN_CD STRING(선택) 시군코드
SIGUN_NM STRING(선택) 시군명
CMPNM_NM STRING(선택) 상호명
REFINE_ROADNM_ADDR STRING(선택) 소재지도로명주소
REFINE_LOTNO_ADDR STRING(선택) 소재지지번주소

출력값

No 출력명 설명
1 SIGUN_CD 시군코드
2 SIGUN_NM 시군명
3 CMPNM_NM 상호명
4 INDUTYPE_CD 업종코드
5 BIZCOND_NM 업태명
6 INDUTYPE_NM 업종명(종목명)
7 REFINE_ROADNM_ADDR 소재지도로명주소
8 REFINE_LOTNO_ADDR 소재지지번주소
9 TELNO 전화번호
10 REGION_MNY_NM 사용가능한지역화폐명
11 BRNHSTRM_MNY_USE_POSBL_YN 지류형지역화폐사용가능여부
12 CARD_MNY_USE_POSBL_YN 카드형지역화폐사용가능여부
13 MOBILE_MNY_USE_POSBL_YN 모바일형지역화폐사용가능여부
14 REFINE_ZIP_CD 우편번호
15 REFINE_WGS84_LAT 위도
16 REFINE_WGS84_LOGT 경도
17 DATA_STD_DE 데이터기준일자

위와 같은 명세서 정보가 있다. 실제 결과를 확인해보기 위해 url을 만들어보자

key: 지난 포스트에서 받은 인증키

type: Json

pSize: 1000 (기본값은 100이지만 최대 1000까지 받을 수 있다.)

pIndex: 1 (만약 요청인자를 통한 검색 결과가 1500이라고 하면 pSize 만큼 출력하고 나머지는 pIndex를 증가시켜서 확인할 수 있다.)

SIGUN_NM: 용인시

REFINE_ROADNM_ADDR: 기흥구 죽전로

https://openapi.gg.go.kr/RegionMnyFacltStus?KEY=인증키&Type=json&pIndex=1&pSize=1000&SIGUN_NM=용인시&REFINE_ROADNM_ADDR=기흥구 죽전로

 

위의 완성된 url을 크롬 주소창에 입력하면 json형태로 데이터가 아래의 형태로 반환된다.

{
    "RegionMnyFacltStus": [
        {
            "head": [
                {
                    "list_total_count": 712
                },
                {
                    "RESULT": {
                        "CODE": "INFO-000",
                        "MESSAGE": "정상 처리되었습니다."
                    }
                },
                {
                    "api_version": "1.0"
                }
            ]
        },
        {
            "row": [
                {
                    "CMPNM_NM": "하늘약국",
                    "INDUTYPE_CD": null,
                    "BIZCOND_NM": null,
                    "INDUTYPE_NM": "약국-약국",
                    "TELNO": null,
                    "REGION_MNY_NM": null,
                    "BRNHSTRM_MNY_USE_POSBL_YN": null,
                    "CARD_MNY_USE_POSBL_YN": null,
                    "MOBILE_MNY_USE_POSBL_YN": null,
                    "DATA_STD_DE": "2020-07-28",
                    "REFINE_LOTNO_ADDR": "경기도 용인시 기흥구 보정동 1263번지 죽전누리에뜰아파트 A동 203-1호",
                    "REFINE_ROADNM_ADDR": "경기도 용인시 기흥구 죽전로 20",
                    "REFINE_ZIP_CD": "16897",
                    "REFINE_WGS84_LOGT": "127.1103809870",
                    "REFINE_WGS84_LAT": "37.3200530391",
                    "SIGUN_CD": "41460",
                    "SIGUN_NM": "용인시"
                },
                {
                    "CMPNM_NM": "누리약국",
                    "INDUTYPE_CD": null,
                    "BIZCOND_NM": null,
                    "INDUTYPE_NM": "약국-약국",
                    "TELNO": null,
                    "REGION_MNY_NM": null,
                    "BRNHSTRM_MNY_USE_POSBL_YN": null,
                    "CARD_MNY_USE_POSBL_YN": null,
                    "MOBILE_MNY_USE_POSBL_YN": null,
                    "DATA_STD_DE": "2020-07-28",
                    "REFINE_LOTNO_ADDR": "경기도 용인시 기흥구 보정동 1263번지 대덕누리에뜰 상가 118호",
                    "REFINE_ROADNM_ADDR": "경기도 용인시 기흥구 죽전로 20",
                    "REFINE_ZIP_CD": "16897",
                    "REFINE_WGS84_LOGT": "127.1103809870",
                    "REFINE_WGS84_LAT": "37.3200530391",
                    "SIGUN_CD": "41460",
                    "SIGUN_NM": "용인시"
                }
            ]
        }
    ]
}

여기서 list_total_count는 검색에서 나온 결과가 712개가 있다는 뜻이다. 위의 코드블럭에서는 일부로 2개만 빼고 나머진 지운 상태다.

 

그럼 위의 결과를 data class로 만들어야하는데 수작업으로 코딩할 수도 있다. 하지만 개발하다보면 이런 일이 많이 일어나기에 선구자들이 이 작업을 위한 플러그인을 만들어 두었다.

 

1. Android Studio -> file -> Settings -> Plugins 이동 -> MarketPlace의 검색에 json to kotlin 검색

2. Json to Kotlin Class 플러그인을 설치해주자.

3. data class를 관리해주기 위해 model이라는 패키지를 만들어준다.

4. model 오른쪽 버튼 클릭 -> New -> Kotlin data class file From Json 선택

5. 우리가 열심히 만든 URL의 결과를 복사 붙여넣기 한다. 클래스 이름은 LocalPayPlace

6. Advanced를 클릭하여 아래와 같이 셋팅을 해준다.

7. 생성한다. 끝

 

위까지 끝내면 model pakage안에 json을 kotlin data class로 변경시킨 코드들이 생성된다.

 

다음 포스팅에서는 데이터를 받기 위해 통신용 라이브러리 retrofit을 사용해보도록 하겠다.

반응형