유튜브에 있는 코딩파파 강의를 듣는것이 빠르게 이해할수 있음.
1. Flutter - JSON 사용하기
2. Flutter - JSON in the background / isolate | 백그라운드 처리
https://youtu.be/4qpMzUcatsU
아래 Json파일을 파싱해서 모델에 넣거나, 모델에 있는 내용을 꺼내서 Json 으로 export하는 예제임.
이 소스는 블로그들을 참조해서 믹싱한 소스(기억이 나면 링크를 할텐데...어디서 어떤걸 봤는지 기억이 안남) 양해부탁드려요
json_data.json 파일 내용
{"name": "park", "email": "park@test.com"}
import 'package:flutter/services.dart' show rootBundle;
import 'dart:convert';
import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; //파일로딩할때 필요.
class User {
final String? name;
final String? email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic>json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() => {
'name' : name,
'email' : email,
};
}
Future<String> getJson(){
return rootBundle.loadString('json_data.json');
}
Future<void> main() async {
User userToJson = User("park", "park@test.com");
//Json포맷으로 만들어서 출력
print(userToJson.toJson());
//Json파싱 후 객체변수에 저장
User jsonToUser = User.fromJson(userToJson.toJson());
print(jsonToUser.name);
print(jsonToUser.email);
loadJson();
loadJson2();
}
loadJson() async {
print('=========================');
print('loadJson() ');
print('=========================');
String inputData = '{"name": "park", "email": "park@test.com"}';
var jsonResult = json.decode(inputData); //디코드하면 쌍따움표가 다 없어짐 jsondecode : {name: park, email: park@test.com}
print('jsondecode : $jsonResult');
var res = User.fromJson(jsonResult);
print(res.email);
print(res.name);
}
/// json 파일을 불러서 읽어서 처리
loadJson2() async {
print('=========================');
print('loadJson2');
print('=========================');
// Right before you would be doing any loading
WidgetsFlutterBinding.ensureInitialized(); //파일로딩하려면 있어야 함, 몰라서 삽질함.
// Load the asset you wanted to load
final configFile = await rootBundle.loadString('lib/assets/json/json_data.json');
var jsonResult = json.decode(configFile);
var res = User.fromJson(jsonResult);
print(res.email);
print(res.name);
}
/* 결과
Syncing files to device iPhone SE (3rd generation)...
Restarted application in 636ms.
flutter: {name: park, email: park@test.com}
flutter: park
flutter: park@test.com
flutter: =========================
flutter: loadJson()
flutter: =========================
flutter: jsondecode : {name: park, email: park@test.com}
flutter: park@test.com
flutter: park
flutter: =========================
flutter: loadJson2
flutter: =========================
flutter: park@test.com
flutter: park
*/
'밥벌이 > dart' 카테고리의 다른 글
[dart] 클래스, DateTime 작성해봄 (0) | 2022.05.04 |
---|---|
[ dart] typedef 사용법 (0) | 2022.05.03 |
dart/flutter 파라미터 _를 사용하는 경우 (0) | 2022.04.25 |
형변환 , ?? (null인 경우만 대입) (0) | 2022.04.25 |
Stream을 통해 들어오는 값을 출력하기 (0) | 2022.04.06 |