상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 플러터에서 JSON 데이터를 파싱하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
플러터에서 JSON 데이터를 파싱하는 것은 매우 일반적인 작업이며, 이를 통해 API로부터 데이터를 받아와서 앱에서 사용할 수 있습니다. JSON(JavaScript Object Notation)은 데이터 교환 형식으로 널리 사용되며, 플러터에서는 이를 쉽게 처리할 수 있는 여러 방법이 있습니다. 아래에서는 JSON 데이터를 파싱하는 방법을 단계별로 설명하겠습니다. 1. JSON 데이터 구조 이해하기 JSON 데이터는 일반적으로 키-값 쌍으로 구성된 객체 형태입니다. 예를 들어, 다음과 같은 JSON 데이터를 고려해 보겠습니다. ```json { "id": 1, "name": "John Doe", "email": "john.doe@example.com" } ``` 이 JSON 데이터는 사용자 정보를 포함하고 있습니다. 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<String, dynamic> json) { return User( id: json['id'], name: json['name'], email: json['email'], ); } // User 객체를 JSON 데이터로 변환하는 메서드 Map<String, dynamic> toJson() { return { 'id': id, 'name': name, 'email': email, }; } } ``` 3. JSON 데이터 파싱하기 이제 JSON 데이터를 `User` 객체로 변환할 수 있는 준비가 되었습니다. 일반적으로 API 호출을 통해 JSON 데이터를 가져오고, 이를 파싱하는 과정을 진행합니다. 예를 들어, `http` 패키지를 사용하여 API에서 데이터를 가져오는 방법은 다음과 같습니다. ```dart import 'dart:convert'; import 'package:http/http.dart' as http; <a href='https://sangseek.com/sangseeks/Future/ko'>Future</a><User> fetchUser() async { final response = await http.get(Uri.parse('https://api.example.com/user/1')); if (response.statusCode == 200) { // JSON 데이터를 User 객체로 변환 return User.fromJson(jsonDecode(response.body)); } else { throw Exception('Failed to load user'); } } ``` 4. 데이터 사용하기 이제 `fetchUser` 함수를 호출하여 사용자 정보를 가져오고, 이를 UI에 표시할 수 있습니다. 예를 들어, `Future<a href='https://sangseek.com/sangseeks/Builder/ko'>Builder</a>`를 사용하여 비동기적으로 데이터를 로드하고 표시하는 방법은 다음과 같습니다. ```dart import 'package:flutter/material.dart'; class UserProfile extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('User Profile')), body: FutureBuilder<User>( future: fetchUser(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } else { final user = snapshot.data!; return Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('ID: ${user.id}', style: TextStyle(fontSize: 20)), Text('Name: ${user.name}', style: TextStyle(fontSize: 20)), Text('Email: ${user.email}', style: TextStyle(fontSize: 20)), ], ), ); } }, ), ); } } ``` 5. JSON 데이터 배열 처리하기 만약 JSON 데이터가 배열 형태라면, 모델 클래스를 사용하여 여러 객체를 생성할 수 있습니다. 예를 들어, 다음과 같은 JSON 배열이 있다고 가정해 보겠습니다. ```json [ { "id": 1, "name": "John Doe", "email": "john.doe@example.com" }, { "id": 2, "name": "Jane Smith", "email": "jane.smith@example.com" } ] ``` 이 경우, `fetchUsers` 함수를 다음과 같이 수정할 수 있습니다. ```dart Future<List<User>> fetchUsers() async { final response = await http.get(Uri.parse('https://api.example.com/users')); if (response.statusCode == 200) { List<dynamic> jsonList = jsonDecode(response.body); return jsonList.map((json) => User.fromJson(json)).toList(); } else { throw Exception('Failed to load users'); } } ``` 이제 여러 사용자를 가져와서 UI에 표시할 수 있습니다. 결론 플러터에서 JSON 데이터를 파싱하는 과정은 모델 클래스를 정의하고, API를 통해 데이터를 가져오며, 이를 UI에 표시하는 단계로 구성됩니다. 이 과정을 통해 다양한 API와 상호작용하며, 동적인 데이터를 앱에 통합할 수 있습니다. JSON 데이터의 구조에 따라 적절한 모델 클래스를 정의하고, 이를 활용하여 데이터를 효과적으로 관리하는 것이 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기