dart - 여러가지 데이터

jokil·2023년 12월 11일
0

플러터

목록 보기
9/15

CSV, properties, XML, JSON 설명과

Dart의 직렬화에 대해서 다루려한다.

■ CSV ( Comma-Separated Values )

  • 데이터를 표 형식으로 저장하고 전송하기 위한 일반적인 형식
  • 각 줄이 레코드( Record )로 구성되어있다.- 각 레코드는 쉼표로 구분된 필드로 구성된다. ( CSV 이름에서 알 수 있듯이 Comma 를 사용 )

String str = "플러터, 다트, 구글"; // 콤마(,)로 구분

csv 라이브러리도 있다.

https://pub.dev/packages/csv

■ properties

  • Key와 Value의 쌍으로 이루어져있다.

  • 일반적으로 txt파일로 저장된다.

  • 일반적으로 설정 정보를 저장하고 전달하는데 사용된다.

이름 = Flutter
나이 = 6
종류 = language

properties 라이브러리

https://pub.dev/packages/properties


■ XML

  • 마크업 언어다.

  • 사용자가 직접 태그를 정의하여 데이터 구조를 만들 수 있다.

  • 복잡한 데이터 구조를 나타낼 수 있다.

<a>
 <b>제목</b>
 </a>

이런 느낌이다.

java에서 데이터 불러올 때 사용했던 것 같다.

이클립스에서 회사 프로젝트 xml보면 너무 두려웠었던 기억이 난다.

■ JSON

  • 네트워크 통신에 가장 많이 사용되고 있다.

  • XML에 비해 적은 용량 ( 제이슨은 경량화된 데이터 교환 형식이다. )

  • Key-Value로 이루어져있음.

{
 "이름" : "홍길동",
 "나이" : 25,
 "성별" : "남자"
}

백에서 json형태의 데이터를 넘겨주면

vue에서 axios로 가져왔던 기억이 난다.

꺼내기가 참 쉬웠다.

■ Dart의 직렬화
○직렬화란?

  • 객체나 데이터 구조를 메모리나 디스크와 같은 저장 매체에 저장하거나 전송하기 위해

    일련의 바이트로 변환하는 과정이다.

  • 객체나 데이터를 일관된 형식으로 표현하여 나중에 복원할 수 있도록 한다.

    클래스 내부의 필드도 직렬화 대상이라면 모두 직렬화 처리를 해줘야한다.

    무슨 뜻이냐면

    클래스가 직렬화될 때, 해당 클래스의 필드들도 직렬화되어야 한다는 의미다.

클래스 설계의 변경에 대비하려면 직렬화 버전 UID를 선언한다.

무슨 뜻이냐면

UID선언해서 만들라는거다.

본론으로 돌아가서

Dart에서 직렬화는

코드로 보자.

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,
  };
}

void main() {
  // 제이슨 형식이라 쌍다옴표를 사용해줘야한다.
  String jsonString = '{"name": "홍길동","email": "abc@aaa.com"}';
  print(jsonString);
}

// 코드 출처 : 오준석의 생존코딩
- 직렬화, 역직렬화는 

  toJson(), fromJson()으로 하는 것이 국룰이라한다.

 

- 직렬화를 잘 안써봤을 경우

  객체안에 객체가 있어서 신경써야 한다고 했다.
profile
주니어 개발자에서 점핑점핑

0개의 댓글