스터디/Flutter+Dart

Flutter JSON < > Model

Dalmangyi 2019. 7. 29.

json은 개발을 하다보면 정말 많이 사용하는 key-value 표현 방식입니다

데이터를 저장하고 불러올때, 데이터를 수신받고 전송할때 많이 쓰입니다

 

사용자 JSON 예제

{
  "name": "Dalmangyi",
  "email": "dalmangyi@email.com"
}

 

JSON -> Map 변환

Map<String, dynamic> user = jsonDecode(jsonString);

print('Howdy, ${user['name']}!');
print('We sent the verification link to ${user['email']}.');

dart에서 제공하는 jsonDecode 함수를 이용하면 가뿐하게 Map 객체로 변환할 수 있습니다 

 

Map 객체는 Key-Value 형태로 담을 수 있는 데이터 구조로 flutter에서는 주로 Key값을 String, Value값을 dynamic으로 사용하고 있습니다. 

 

 

Map -> JSON 변환

String jsonString = jsonEncode(user);

jsonEncode 함수를 이용하면 가뿐하게 Map 객체를 Json String으로 변환할 수 있습니다

 

 

매핑

class User {
  final String nm; //name
  final String em; //email

  User(this.nm, this.em);

  User.fromJson(Map<String, dynamic> json)
      : nm = json['name'],
        em = json['email'];

  Map<String, dynamic> toJson() =>
    {
      'name': nm,
      'email': em,
    };
}

json의 key와 만들고자하는 클래스의 변수가 다르다면 fromJson, toJson 함수를 만들어서 매핑할 수 있습니다.

 

 

//방법1
Map userMap = jsonDecode(jsonString);
var user = jsonEncode(userMap);

//방법2
var user = User.fromJson(jsonString);
Map userMap = user.toJson();

print('Howdy, ${user.name}!');
print('We sent the verification link to ${user.email}.');

 

 

 

 

댓글