API를 호출해서 DB에 저장해야 하는데, 불러온 데이터를 문자열로 생각하고 정규표현식으로 잘라보려고 용을 쓰던 중 xml 파일이라는 걸 깨닫고 바로 해결되어버렸다.
다만 데이터에 <, >, " 같은 특수기호들이 < > "
같은 식으로 저장되어 있어서 이 문자들을 특수기호로 다시 바꿔준 뒤 xmltodict.parse 함수에 넣어주었다.
그 뒤 json.dumps
함수를 사용하면 되는데 이때 한글이 깨져서 인코딩 관련 인자를 찾아보니 ensure_ascii=False
로 설정하고 파일을 저장할 때 utf8 로 인코딩 해주니 해결되었다.
import requests
import json
import xmltodict
req = requests.post(url, data=datas)
rawdata = req.text
cleaned_data = rawdata.replace("<", "<").replace(">", ">").replace(""", "\"")
jsonString = json.dumps(xmltodict.parse(cleaned_data), indent=4, ensure_ascii=False)
with open("xml_to_json.json", 'w', encoding='utf8') as f:
f.write(jsonString)
f.close()