Flutter에서 JSON 데이터를 파싱하는 방법은 무엇인가요?
_____A1. Flutter에서는 `dart:convert` 패키지에 포함된 `json.decode()` 함수를 사용해 JSON 문자열을 Map 또는 List로 변환할 수 있습니다. 예를 들어:
```dart
import 'dart:convert';
void main() {
String jsonString = '{"name": "홍길동", "age": 30}';
Map
print(user['name']); // 홍길동
}
```
Q2. JSON 파싱 후 데이터를 모델 클래스로 변환하려면 어떻게 하나요?
A2. JSON Map을 Dart 객체로 변환하려면 모델 클래스를 만들고, factory 생성자를 통해 `fromJson` 메서드를 정의합니다. 예:
```dart
class User {
final String name;
final int age;
User({required this.name, required this.age});
factory User.fromJson(Map
return User(
name: json['name'],
age: json['age'],
);
}
}
void main() {
String jsonString = '{"name": "홍길동", "age": 30}';
Map
User user = User.fromJson(userMap);
print(user.name); // 홍길동
}
```
Q3. JSON 배열을 파싱하려면 어떻게 해야 하나요?
A3. JSON 배열은 `List
```dart
String jsonString = '[{"name": "홍길동", "age": 30}, {"name": "김철수", "age": 25}]';
List
List
```
Q4. JSON 파싱 시 null 안전성을 확보하려면 어떻게 하나요?
```dart
factory User.fromJson(Map
return User(
name: json['name'] ?? '이름없음',
age: json['age'] ?? 0,
);
}
```
또는 필수 필드가 없으면 예외를 던질 수도 있습니다.
Q5. 자동으로 JSON 파싱 코드를 생성해주는 도구가 있나요?
A5. 네, `json_serializable` 패키지를 이용하면 빌더를 통해 모델 클래스에 자동으로 `fromJson`, `toJson` 코드를 생성할 수 있습니다. 작업 순서:
- `pubspec.yaml`에 `json_serializable`, `build_runner` 추가
- 모델 클래스에 `@JsonSerializable()` 어노테이션 추가
- `flutter pub run build_runner build` 실행하여 코드 생성
이는 반복 작업을 줄이고 유지보수를 쉽게 해줍니다.
Q6. Flutter 네트워킹과 JSON 파싱은 어떻게 연동하나요?
A6. 주로 `http` 패키지를 사용해 REST API 호출 후, 응답의 `body`를 `json.decode()` 해 Map/List로 변환 후 모델에 적용합니다. 예:
```dart
import 'package:http/http.dart' as http;
Future
final response = await http.get(Uri.parse('https://api.example.com/user/1'));
if (response.statusCode == 200) {
return User.fromJson(json.decode(response.body));
} else {
throw Exception('Failed to load user');
}
}
```
Q7. JSON 파싱 중 에러가 발생하면 어떻게 처리하나요?
A7. try-catch 문으로 감싸 예외를 처리하거나, null 체크 및 타입 체크를 통해 안전하게 코드를 작성합니다. 예:
```dart
try {
final Map
final user = User.fromJson(data);
} catch (e) {
print('JSON 파싱 오류: $e');
}
```
---
이와 같이 Flutter에서 JSON을 파싱할 때는 `dart:convert`를 활용해 문자열을 Map/List로 변환하고, 모델 클래스를 정의해 명확하게 데이터를 다루며 null 안전과 에러 처리를 고려하는 것이 기본 원칙입니다. 더 복잡한 환경에서는 `json_serializable`과 같은 코드 생성 패키지 사용도 권장됩니다.
JSON(JavaScript Object Notation)은 데이터를 구조화하는 데 널리 사용되는 형식으로, Flutter에서는 이를 쉽게 처리할 수 있는 여러 방법이 있습니다.
아래에서는 Flutter에서 JSON 데이터를 파싱하는 방법을 단계별로 설명하겠습니다.
1. JSON 데이터 준비 먼저, JSON 데이터를 준비해야 합니다.
예를 들어, 다음과 같은 JSON 데이터를 사용할 수 있습니다.
```json { "id": 1, "name": "John Doe", "email": "[email protected]" } ```
2. 모델 클래스 생성 JSON 데이터를 파싱하기 위해서는 먼저 해당 데이터를 표현할 모델 클래스를 생성해야 합니다.
위의 JSON 데이터를 기반으로 `User`라는 모델 클래스를 만들어 보겠습니다.
```dart class User { final int id; final String name; final String email; User({required this.id, required this.name, required this.email}); // JSON 데이터를 User 객체로 변환하는 팩토리 메서드 factory User.fromJson(Map
3. JSON 데이터 파싱 이제 JSON 데이터를 `User` 객체로 변환하는 방법을 살펴보겠습니다.
JSON 데이터를 문자열로 받아온 후, `dart:convert` 패키지를 사용하여 파싱할 수 있습니다.
```dart import 'dart:convert'; void main() { // JSON 문자열 String jsonString = '{"id": 1, "name": "John Doe", "email": "[email protected]"}'; // JSON 문자열을 Map으로 변환 Map
4. API에서 JSON 데이터 가져오기 실제 애플리케이션에서는 API를 통해 JSON 데이터를 가져오는 경우가 많습니다.
`http` 패키지를 사용하여 API에서 데이터를 가져오는 방법을 살펴보겠습니다.
4.1. `http` 패키지 추가 `pubspec.yaml` 파일에 `http` 패키지를 추가합니다.
```yaml dependencies: http: ^0.13.3 ```
4.2. API 호출 및 JSON 파싱 다음은 API에서 JSON 데이터를 가져와서 파싱하는 예제입니다.
```dart import 'dart:convert'; import 'package:http/http.dart' as http; Future
5. JSON 데이터 리스트 파싱 JSON 데이터가 리스트 형태일 경우, 여러 객체를 파싱하는 방법도 알아보겠습니다.
예를 들어, 다음과 같은 JSON 배열이 있다고 가정합니다.
```json [ {"id": 1, "name": "John Doe", "email": "[email protected]"}, {"id": 2, "name": "Jane Doe", "email": "[email protected]"} ] ``` 이 경우, `User` 객체의 리스트를 반환하는 메서드를 추가할 수 있습니다.
```dart List
작성자:
박현서 [비회원]
| 작성일자: 1년 전
2024-09-19 01:51:18
조회수: 185 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 185 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.