<Flutter> api 에서 응답받은 xml 을 json으로 변환

반응형

제목: Flutter에서 API로 받은 XML을 JSON으로 변환하고 저장하는 방법

안녕하세요! 오늘의 블로그 글에서는 Flutter 앱에서 API에 호출을 통해 XML 응답을 받고, 해당 응답을 JSON으로 변환하여 저장하는 방법에 대해 자세하게 설명하겠습니다. 이 방법을 통해 웹 API에서 XML 데이터를 쉽게 변환하고 사용할 수 있습니다.

먼저 사용할 라이브러리를 설치해야 합니다.

1. 패키지 설치

라이브러리 설치는 다음 단계로 진행합니다.
먼저 http, xml2json, 그리고 필요한 경우 shared_preferences(데이터 저장을 위한 간편한 방법) 패키지를 프로젝트에 설치하세요. pubspec.yaml 파일에서 다음과 같이 의존성을 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3
  xml2json: ^6.0.0
  shared_preferences: ^2.0.8

2. 라이브러리 import

이제 http, xml2json, 및 shared_preferences 라이브러리를 사용할 파일에 import 해주세요.

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:xml2json/xml2json.dart';
import 'package:shared_preferences/shared_preferences.dart';

3. API 호출 및 데이터 변환

다음으로, http 패키지를 사용해 API를 호출하고, 받은 XML 응답을 JSON으로 변환하는 코드를 작성합니다.

Future> fetchXmlData() async {
  try {
    // 원하는 API URL로 요청
    String url = "https://example.com/api/sample.xml";
    final response = await http.get(Uri.parse(url));

    if (response.statusCode == 200) {
      // API로부터 응답을 가져옴
      String xmlData = response.body;

      // Xml 데이터를 Json으로 변환하기 위해 xml2json 객체 생성
      final Xml2Json xml2Json = Xml2Json();

      // Xml 데이터를 Json으로 변환
      xml2Json.parse(xmlData);
      var jsonData = xml2Json.toParker();

      // Json 데이터를 저장
      await saveJsonData(jsonData);
    } else {
      throw Exception('Failed to load XML data');
    }
  } catch (e) {
    print('Error: $e');
  }
}

4. SharedPreferences를 사용하여 JSON 데이터 저장

이제 JSON 데이터를 저장할 차례입니다. 여기서는 간단하게 데이터를 저장할 수 있는 라이브러리인 shared_preferences를 사용해 설명합니다.

Future<void> saveJsonData(String jsonData) async {
  try {
    // SharedPreferences 인스턴스 생성
    SharedPreferences prefs = await SharedPreferences.getInstance();

    // JSON 데이터를 'jsonData' 키에 저장
    await prefs.setString('jsonData', jsonData);
  } catch (e) {
    print('Error: $e');
  }
}

이제 위의 코드를 사용하여 API로부터 받은 XML 데이터를 JSON으로 변환하고, 앱 내에서 저장할 수 있습니다.

저장한 JSON 데이터는 나중에 앱 내에서 필요한 시점에서 불러와 사용할 수 있습니다.

 

이처럼 Flutter에서 오픈 API로부터 받은 XML을 JSON으로 변환하고 저장하는 방법을 활용하면, 다양한 웹 API에 대해 유연하게 대처할 수 있습니다.

Designed by JB FACTORY