객체 -> Map -> String
jsonEncode
객체에 toJson 메서드 구현
String -> Map -> 객체
String -> Map : jsonDecode 함수
Map -> 객체 : 객체에 fromJson named 생성자를 구현해서 사용!

import 'dart:convert'; void main() { // jsonEncode: Map => String // Map<String, dynamic> map = {"name": "홍길동", "age": 20}; String jsonData = jsonEncode(map); print(jsonData); // triplequotes: 긴 텍스트나 특정형식 유지 """ """ String jsonSampleData = """ { "name":"홍길동", "age":20 } """; var decodedData = jsonDecode(jsonSampleData); print(decodedData.runtimeType); print(decodedData); Human human = Human.fromJson(decodedData); human.toJson(); }
class Human { String name; int age; Human({required this.name, required this.age}); Human.fromJson(Map<String, dynamic> map) : this(name: map['name'], age: map['age']); Map<String, dynamic> toJson() { return {'name': name, 'age': age}; } }
(Map<String, dynamic> map)
this(...) => 초기화 리스트와 리다이렉트
콜론(:) 뒤에 오는 코드를 초기화 리스트라고 부릅니다.
"나(네임드 생성자)한테 직접 만들라고 하지 말고, 이미 만들어둔 기본 생성자에게 일을 시켜라"라는 뜻입니다. (이를 리다이렉팅 생성자라고 합니다.)
name: map['name']