반응형
이번 포스팅에서는 OpenApi를 이용하여 응답된 정보가 xml일 경우, json으로 변경하는 기능을 설명합니다.
OpenApi와의 통신 방법은 아래의 포스팅에서 확인이 가능합니다.
https://luvris2.tistory.com/302
conda 혹은 cmd에서 필요한 모듈 설치
pip install xmltodict, json
xml -> json 데이터 타입 변경
- xml의 데이터를 json의 형태로 변환하기
xmltodict.parse(변환 할 xml의 데이터)
- json 타입으로 변경하기
json.loads(json.dumps(변경 된 json의 형태를 갖는 데이터))
- json 형태로 변경하는 예시 소스 코드
# json 형태로 변환
# xmlToJsonConverter = json의 형태로 바꾼 데이터를 저장하는 변수
# response = OpenApi 응답 정보를 담고 있는 변수 (xml의 형태로 저장)
xmlToJsonConverter = xmltodict.parse(response.text)
# json 타입으로 변경
# resultList = json 타입으로 변경된 데이터를 저장하는 변수
resultList = json.loads(json.dumps(xmlToJsonConverter))
전체 소스 코드
메인 실행 파일 (app.py)
from flask import Flask
from config import Config
from flask_restful import Api
from resources.kopisApi import KopisApiResource
app = Flask(__name__)
# 환경변수 세팅
app.config.from_object(Config)
api = Api(app)
# 경로와 resource(API코드)를 연결
# 공연 목록 조회 API
api.add_resource(KopisApiResource, '/performancesearch')
추가 리소스 파일 (KopisApiResource.py)
class KopisApiResource(Resource):
def get(self) :
# 파라미터로 검색 조건 받기
stdate = request.args['stdate'] # 공연시작일자, 6자로 입력받기 ex) 20220701
eddate = request.args['eddate'] # 공연종료일자, 6자로 입력받기 ex) 20220801
cpage = request.args['cpage'] # 현재 페이지, 정수형으로 입력
rows = request.args['rows'] # 페이지당 목록 수, 정수형으로 입력
# 파라미터에 들어갈 정보
params = {
"service" : Config.KOPIS_ACCESS_KEY,
"stdate" : stdate,
"eddate" : eddate,
"cpage" : cpage,
"rows" : rows
}
# 요청하는 API의 URL과 API에서 요구하는 데이터 입력
response = requests.get(Config.KOPIS_BASE_URL, params=params)
# json 형태로 변환
xmlToJsonConverter = xmltodict.parse(response.text)
# json 타입으로 변경
resultList = json.loads(json.dumps(xmlToJsonConverter))
return { "resultList" : resultList['dbs']['db'] }, 200
- 요청 결과
반응형