Flutter의 jsonDecode
Flutter에서 jsonDecode는 JSON 데이터를 파싱하여 Dart 객체로 변환하는 함수입니다. 주로 HTTP 요청이나 로컬 파일로부터 가져온 JSON 데이터를 사용자가 처리할 수 있는 형식으로 변환할 때 사용됩니다.
jsonDecode의 역할
jsonDecode
함수는 JSON 문자열을 파싱하여 Dart의 기본 자료형으로 변환합니다. Dart에서 제공하는 dart:convert
라이브러리에 포함되어 있으며, JSON 문자열을 Map
이나 List
와 같은 Dart 객체로 변환합니다.
사용 예시
아래는 JSON 데이터를 jsonDecode
를 사용하여 파싱하는 예제입니다:
import 'dart:convert';
void main() {
String jsonString = '{"name": "John", "age": 30}';
// jsonDecode로 JSON 문자열을 Map으로 변환
Map<String, dynamic> user = jsonDecode(jsonString);
print('이름: ${user['name']}');
print('나이: ${user['age']}');
}
jsonDecode의 반환 값
jsonDecode
함수는 JSON의 구조에 따라 Map
또는 List
를 반환합니다. 예를 들어, JSON 객체는 Map
으로 변환되고, 배열은 List
로 변환됩니다.
Map을 반환하는 경우
String jsonString = '{"name": "Alice", "age": 25}';
Map<String, dynamic> user = jsonDecode(jsonString);
print(user['name']); // 출력: Alice
List를 반환하는 경우
String jsonArray = '[{"name": "Alice"}, {"name": "Bob"}]';
List users = jsonDecode(jsonArray);
print(users[0]['name']); // 출력: Alice
Flutter에서 jsonDecode 사용
Flutter 앱에서 HTTP API로부터 받은 JSON 데이터를 파싱할 때 jsonDecode
를 자주 사용합니다. 예를 들어, http
패키지를 사용하여 서버로부터 JSON 데이터를 받아와 이를 파싱하는 과정은 다음과 같습니다:
import 'dart:convert';
import 'package:http/http.dart' as http;
void fetchData() async {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/users'));
if (response.statusCode == 200) {
List data = jsonDecode(response.body);
print('첫 번째 사용자 이름: ${data[0]['name']}');
} else {
print('데이터를 불러오는데 실패했습니다.');
}
}
jsonDecode의 주요 특징
- 간편한 JSON 파싱: JSON 문자열을 간단하게 Dart의
Map
이나 List
객체로 변환합니다.
- 에러 처리: 잘못된 JSON 형식이 입력될 경우
FormatException
을 발생시켜 에러를 처리할 수 있습니다.
- 비동기 작업과 사용: 서버로부터 데이터를 받아올 때 비동기 작업과 함께 자주 사용됩니다.
결론
jsonDecode
는 Flutter에서 JSON 데이터를 파싱할 때 매우 유용한 함수입니다. 서버로부터 받아온 데이터를 손쉽게 Dart 객체로 변환할 수 있으며, 이를 통해 데이터를 앱 내에서 쉽게 처리할 수 있습니다.