Loading...

Dart / / 2022. 6. 3. 12:18

Dart JSON-Object 변환

반응형

다트도 버퍼가 있다. httpUrlConnection 같은것.

 

통신으로 받았다 치고 response에 json 데이터를 넣었다.

통신으로 받은 데이터의 타입을 정확히 적는다면 String이다.

var response = '{"id": 119,"username": "hello1","password": "1234","email": "hello1@nate.com","created": "2022-31-23T06:31:21","updated": "2022-31-23T06:31:21"}';

void main() {
  print(response);
}

 

String 타입으로 받은 json 데이터를 map이나 클래스 타입으로 바꿔야 사용하기 편하겠다.

 

json 데이터를 오브젝트 타입으로 변환하는 방법이 필수이다. Gson같이.

gson이나 오브젝트 매퍼는 내부적으로 리플렉션 기법을 사용한다.

 

런타임시에 분석하여 오브젝트를 json으로 바꾸거나 json을 오브젝트로 바꾼다.

 

이건 자바의 얘기이고 다트는 다르다.

 

https://app.quicktype.io/

 

Instantly parse JSON in any language | quicktype

 

app.quicktype.io

 

위의 코드 결과값 String을 홈페이지에 붙여넣으면 dart 오브젝트로 변환하는 코드를 만들어준다.

 

 

import 'dart:convert';

var response = '{"id": 119,"username": "hello1","password": "1234","email": "hello1@nate.com","created": "2022-31-23T06:31:21","updated": "2022-31-23T06:31:21"}';

void main() {
  print(response);
}

// To parse this JSON data, do
//
//     final user = userFromJson(jsonString);
User userFromJson(String str) => User.fromJson(json.decode(str));

String userToJson(User data) => json.encode(data.toJson());

class User {
    User({
        this.id,
        this.username,
        this.password,
        this.email,
        this.created,
        this.updated,
    });

    int? id;
    String? username;
    String? password;
    String? email;
    String? created;
    String? updated;

    factory User.fromJson(Map<String, dynamic> json) => User(
        id: json["id"],
        username: json["username"],
        password: json["password"],
        email: json["email"],
        created: json["created"],
        updated: json["updated"],
    );

    Map<String, dynamic> toJson() => {
        "id": id,
        "username": username,
        "password": password,
        "email": email,
        "created": created,
        "updated": updated,
    };
}

 

우리가 json 데이터를 들고있으니까 userFromJson을 호출하여 데이터를 받아보자.

 

void main() {
  User reqUser = userFromJson(response);
  print(reqUser);
  print(reqUser.id);
}

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 
반응형