Dart가 지원하는 여러 데이터 형식들
Dart에서는 다양한 데이터 형식을 처리할 수 있는 라이브러리와 패키지가 존재합니다. 다음은 그 라이브러리에서 사용하는 데이터 형식을 설명하겠습니다.
CSV (Comma Separated Values)
CSV는 ,(쉼표)로 구분된 텍스트 기반 데이터 형식입니다. 각 줄은 하나의 레코드를 나타내며, 각 레코드는 쉼표로 구분된 필드로 이루어집니다. Dart에서 CSV를 다루기 위해 csv 패키지를 사용할 수 있습니다. 이 패키지를 사용하면 CSV 파일을 읽고 쓰는 기능을 제공합니다.
Properties
Properties는 파일에 설정 정보를 저장하기 위해 사용되는 텍스트 파일의 형식입니다. Properties 파일은 key-value
쌍으로 구성되어있고, Dart에서는 properties 패키지를 사용하여 파일의 key-value 값을 읽고 쓰는 기능을 제공합니다.
XML (eXtensible Markup Language)
XML은 계층적 구조로 데이터를 표현하는 마크업 언어입니다. Dart에서 XML을 다루기 위해 xml 패키지를 사용할 수 있습니다. 이 패키지를 사용하면 XML을 파싱(parsing)하고 생성하는 기능을 제공합니다.
JSON (JavaScript Object Notation)
JSON은 경량의 데이터 교환 형식으로 많이 사용되는 형식입니다. Dart에서 JSON을 다루기 위해 기본적으로 내장된 dart:convert
라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하여 JSON 문자열을 객체로 파싱(parsing)하거나 , 객체를 JSON 문자열로 직렬화하는 기능을 제공합니다.
직렬화와 역직렬화
Dart에서 사용하는 데이터의 형식을 배웠으니, 이제 데이터를 변환하는 과정인 직렬화와 역직렬화에 대해 알아보겠습니다.
직렬화 (Serialization)
직렬화란 객체나 데이터 구조를 외부에서 사용 가능한 형식(json, xml)으로 변환하는 과정입니다. 직렬화된 데이터는 저장, 전송, 공유 등에 사용될 수 있습니다.
역직렬화 (Deserialization)
역직렬화는 직렬화된 데이터를 원래의 객체나 데이터 구조로 변환하는 과정을 말합니다. 역직렬화는 직렬화된 데이터를 읽고, 해당 데이터를 기반으로 객체나 데이터 구조를 복원합니다.
예를 들어, Dart에서는 JSON을 사용하여 객체를 직렬화하고 역직렬화할 수 있습니다. 직렬화는 객체를 JSON 문자열로 변환하는 과정이고, 역직렬화는 JSON 문자열을 다시 객체로 변환하는 과정입니다.
Json으로 데이터 직렬화, 역직렬화 해보기
위에서 예시로 들었던 직렬화와 역직렬화를 예제로 설명하겠습니다.
이 클래스에서는 직렬화와 역직렬화를 위한 메서드들이 구현되어 있습니다.
직렬화는 User 객체를 JSON 형식으로 변환할 toJson() 메서드이며, 변환한 객체를 Map Collection으로 반환합니다.
역직렬화하는 메서드는 fromJson() 메서드입니다. fromJson() 메서드는 JSON 데이터를 User 객체로 다시 변환합니다. Map Collection을 인자로 받고, JSON 데이터에서 name과 email 필드를 추출하여 객체를 생성합니다.