XML to JSON 사용하기
음악 정보를 가져오는 api를 찾던중에 maniadb라는 곳을 발견했다. 여기서 음악의 정보를 가져오려고 보는데 JSON이 아니라 XML로 API 통신으로 하고 있었다. 하지만 원하는 정보를 제공하는 API 중에서 사용에 큰 제약이 없어서 ManiaDB를 사용하기로 결정했다.
XML
우선 XML이 무엇인지 알아야한다. XML은 eXtensible Markup Language의 약자로 데이터를 정의하는 규칙을 제공하는 마크업 언어로, 태그를 사용하여 데이터 속성과 실제 데이터를 구분합니다.
<guests>
<guest>
<firstName>John</firstName> <lastName>Doe</lastName>
</guest>
<guest>
<firstName>María</firstName> <lastName>García</lastName>
</guest>
<guest>
<firstName>Nikki</firstName> <lastName>Wolf</lastName>
</guest>
</guests>
구조 예시를 보시면 HTML과 유사한 것을 볼 수 있는데 개발한 회사에서 직렬화를 위해서 만든 도구이기 때문입니다. 그러면 XML에 대해서 간단히 알아봤는데 XML 데이터를 이용해서 앱을 만들어야하는지 고민에 빠졌습니다.
검색을 통해서 알아보니 XML과 JSON은 데이터 통신을 할때 사용되는데 차이가 있습니다. XML은 다양한 속성을 부여하여 많은 정보를 포함 할 수 있지만 통신 속도가 느려질 수 있다는 장점이 있고, JSON은 속성의 종류가 제한되어있고 구조가 단순해서 속도가 빠르다는 것을 알았습니다. 지금 필요한 데이터는 XML의 다양한 속성을 이용하지도 않고 JSON으로 하는게 데이터 사용에 있어서 장점이 있다는 것을 알고 JSON으로 변환해서 사용하기로 결정했습니다.
XML to JSON
그러면 XML데이터를 JSON으로 변환해서 사용을 해야합니다. 검색을 해보니 바로 'xml2json' XML으로 JSON으로 변환해주는 라이브러리가 있어서 사용하기로 했습니다.
사용방법
// 1. 라이브러리 설치
flutter pub add xml2json
// 2. 받아온 데이터 파싱하기
final Xml2Json xml2json = Xml2Json();
xml2json.parse(xmlData);
var jsonData = xml2json.toParker();
이렇게 라이브러리를 가져와서 파싱만 해주면 간단하게 json으로 변환할 수있습니다. 이때 toParker는 xml2json의 함수중 하나로 데이터에 xml속성까지 포함한 json데이터를 만들어줍니다. toParker를 사용하지 않고 toJson함수를 이용할 경우에는 속성은 포함되지 않고 더 간결한 데이터만을 가지게 됩니다.
온라인 컨버터를 통해서 변환된 json데이터를 봤을때는 __cdata라는 속성이 계속 남아있는 문제가 있었습니다. 그래서 속성을 없애주는 함수를 만들었는데 chatGPT에게 변환을 시킨 데이터에는 __cdata 속성이 남아있지 않았고 실제로 만든 함수를 제거하고 실행했을 때도 문제 없이 실행되는 걸로 보아 실제로는 속성이 제거되었다는 것을 알 수 있었습니다.
이렇게 xml을 json으로 바꿔서 사용하기 위한 준비하는 과정을 정리해봤습니다. 글을 쓰면서 __cdata 속성에 사라진다는 것을 안게 좀 충격이기는 하지만 오히려 데이터가 깔끔해져서 사용하는데 더 좋을 것 같습니다.
'Flutter > 캠프' 카테고리의 다른 글
HTML In JSON (0) | 2025.01.23 |
---|---|
Flutter 숙련_개인프로젝트: 지역 검색 앱 (1) | 2024.12.09 |
24.12.02 Today Error (0) | 2024.12.02 |
24.11.29 오늘 있었던 오류들 (1) | 2024.11.29 |
flutter(기초 팀프로젝트) : 화면 전환시 추가된 정보 바로 적용하기 (0) | 2024.11.28 |