직렬화 - Flutter SDK
Flutter용 Atlas Device SDK 는 정적 Realm 객체와의 확장 JSON (EJSON) 직렬화 및 역직렬화를 지원합니다.
직렬화 에 지원되는 데이터 유형
Flutter SDK 는 현재 다음과 같은 지원되는 데이터 유형의 직렬화를 지원합니다.
모든 다트 언어 데이터 유형
십진수128 및 RealmValue를 제외한 모든 Realm별 데이터 유형
다음 표는 SDK의 Realm 관련 데이터 유형이 출력 예시를 통해 직렬화되는 방법을 보여줍니다.
Realm 유형 | 다음으로 직렬화 |
---|---|
날짜/시간 | 날짜
|
RealmList | 배열
|
RealmMap | 배열
|
RealmSet | 배열
|
ObjectId | ObjectId
|
UUID | 바이너리
|
Uint8List | 바이너리
|
객체 | 문서
|
Realm이 아닌 유형의 직렬화에 대한 자세한 내용은 BSON 데이터 유형 및 관련 표현을 참조하세요.
Flutter SDK 직렬화는 현재 코드, CodeWScope, DBPointer, DBRef, 정규 표현식, 타임스탬프와 같은 BSON types를 지원 하지 않습니다.
Realm 객체 직렬화
SDK의 전체 문서 인코더를 사용하면 사용자 정의 클래스를 직렬화 및 역직렬화할 수 있습니다.
인코더를 사용하려면 일반적으로 @RealmModel()
주석을 사용하는 것처럼 객체 모델 을 만듭니다. part
선언으로 생성된 RealmObject
클래스 모델은 직렬화 및 역직렬화에 필요한 메서드를 제공합니다.
이 페이지의 예제에서는 다음 Pet
객체 모델 이 사용됩니다.
import 'package:realm_dart/realm.dart'; part 'pet.realm.dart'; ()class _Pet { late String type; late int numberOfLegs; late DateTime birthDate; late double? price; }
EJSON으로 직렬화
클래스 기반 객체의 경우 RealmObject
toEjson() 를 사용하여 EJSON으로 직렬화할 수 있습니다. 다음 두 가지 방법으로 메서드를 사용할 수 있습니다.
// Pass the object as a parameter to the method EJsonValue serializeByParam = toEJson(spider); // Call the method directly on the object EJsonValue serializeWithCall = spider.toEJson();
{ type: Jumping Spider, numberOfLegs: {$numberInt: 8}, birthDate: {$date: {$numberLong: 1712707200000}}, price: null }
EJSON에서 역직렬화
fromEjson() 을 사용하여 EJSON에서 역직렬화 메서드. 이 메서드는 지정된 객체 유형에 대한 EJSON을 입력으로 사용하고 지정된 객체 유형의 역직렬화된 인스턴스 를 출력합니다.
다음 예시 에서는 이전 예시 에서 serializeByParam
을 역직렬화합니다.
// Pass the serialized object to the method final deserializeFromEjsonWithExplicitType = fromEJson<Pet>(serializeByParam); // The method can also infer the object type Pet deserializeFromEjson = fromEJson(serializeByParam);
비 Realm 객체 직렬화
Realm이 아닌 클래스의 경우 클래스 생성자에서 @ejson
주석을 사용하여 디코더와 인코더를 생성할 수 있습니다.
class Person { final String name; final DateTime birthDate; final int? age; final double income; final Person? spouse; // annotate constructor to generate decoder and encoder Person(this.name, this.birthDate, this.income, {this.spouse, this.age}); }
사용자 지정 코덱 등록
SDK는 사용자 지정 EJSON 코덱도 지원합니다. 앱 에서 사용하려면 등록 하세요. 지정된 유형에 대한 사용자지정 EJSON 인코더 및 디코더입니다.