[flutter] 플러터(Flutter)에서 JSON 파싱하기

앱 개발에서 JSON 데이터를 사용할 필요가 많이 있습니다. 이러한 경우 플러터(Flutter)에서 JSON 데이터를 파싱하여 원하는 형식으로 사용할 수 있습니다. 이번 포스트에서는 플러터에서 JSON을 파싱하는 방법에 대해 알아보겠습니다.

1. JSON 파일 가져오기

JSON 데이터를 파싱하려면 먼저 JSON 파일을 가져와야 합니다. 예를 들어, 웹 서버 API에서 JSON 데이터를 가져오는 경우 다음과 같이 http 패키지를 사용하여 데이터를 가져올 수 있습니다.

import 'package:http/http.dart' as http;

Future<void> fetchData() async {
  final response = await http.get('https://api.example.com/data.json');
  if (response.statusCode == 200) {
    // JSON 데이터 파싱
  } else {
    // 에러 처리
  }
}

2. JSON 데이터 파싱하기

JSON 데이터를 파싱하기 위해서는 dart:convert 패키지를 사용해야 합니다. 이 패키지에는 JSON 데이터를 파싱하는 메서드인 json.decode()가 포함되어 있습니다. 파싱하기 전에 우선 http 패키지의 응답(response)을 문자열로 변환해야 합니다.

import 'dart:convert';

if (response.statusCode == 200) {
  final jsonString = response.body;
  final decodedData = json.decode(jsonString);
  // 파싱한 JSON 데이터 사용
}

3. 파싱한 데이터 사용하기

JSON 데이터를 파싱한 후에는 원하는 형식으로 사용할 수 있습니다. 예를 들어, JSON 데이터에서 특정 키의 값을 가져와서 변수에 저장할 수 있습니다.

final name = decodedData['name'];
final age = decodedData['age'];

print('이름: $name, 나이: $age');

위의 예제에서 decodedData는 파싱한 JSON 데이터를 나타내는 맵입니다. 특정 키의 값을 가져오려면 해당 키를 인덱스로 사용하면 됩니다.

4. 모델 클래스 사용하기

때로는 JSON 데이터를 파싱한 후에 해당 데이터를 특정 형식에 맞게 사용해야 할 수도 있습니다. 이러한 경우 모델 클래스를 사용하여 JSON 데이터를 적절하게 변환할 수 있습니다.

class Person {
  final String name;
  final int age;

  Person({required this.name, required this.age});

  factory Person.fromJson(Map<String, dynamic> json) {
    return Person(
      name: json['name'],
      age: json['age'],
    );
  }
}

final person = Person.fromJson(decodedData);
print('이름: ${person.name}, 나이: ${person.age}');

위의 예제에서 Person 클래스는 JSON 데이터를 Person 객체로 변환하는 역할을 합니다. fromJson 팩토리 메서드를 통해 파싱된 JSON 데이터에서 필요한 값을 가져와 새로운 Person 객체를 생성합니다.

결론

이제 플러터(Flutter)에서 JSON 데이터를 파싱하는 방법에 대해 알아보았습니다. 이를 통해 앱 개발 과정에서 서버로부터 받은 JSON 데이터를 쉽게 활용할 수 있습니다. 자세한 내용은 공식 문서를 참고하시기 바랍니다.