유튜브에 있는 코딩파파 강의를 듣는것이 빠르게 이해할수 있음. 


1. Flutter - JSON 사용하기

https://youtu.be/E6KKL0Oe-2E

 

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
 */

+ Recent posts