[개발] Flutter

[Flutter] jsonDecode 란?

  • -
반응형

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 객체로 변환할 수 있으며, 이를 통해 데이터를 앱 내에서 쉽게 처리할 수 있습니다.

반응형

'[개발] Flutter' 카테고리의 다른 글

[Flutter] itemBuilder 란?  (0) 2024.10.02
[Flutter] ListView 란?  (0) 2024.10.01
[Flutter] CircularProgressIndicator 란?  (0) 2024.09.29
[Flutter] snapshot 란?  (1) 2024.09.28
[Flutter] FutureBuilder 란?  (0) 2024.09.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.