10.8.1 직렬화 형식(Serialization format)
10.8.1 직렬화 형식(Serialization format)
각 지원 값은 고유한 접두 문자로 변환되고, 필요한 데이터가 뒤따릅니다.
null:nInt: 0이면z, 또는 정수 표시가 뒤따르는i(예:i456)Float:NaN:k- 음의 무한대:
m - 양의 무한대:
p - 유한 float:
d뒤에 float 표시(예:d1.45e-8)
Bool:true는t,false는fString:y뒤에 url 인코딩된 문자열 길이, 그 다음:와 url 인코딩된 문자열(예:"hi there"는y10:hi%20there)- 이름-값 쌍: 직렬화된 이름을 나타내는 문자열 뒤에 직렬화된 값
- 구조체(structure):
o뒤에 이름-값 쌍 목록,g로 종료(예:{x:2, k:null}은oy1:xi2y1:kng) List:l뒤에 직렬화된 항목 목록,h로 종료(예: 두null값을 가진 list는lnnh)Array:a뒤에 직렬화된 항목 목록,h로 종료. 여러 연속null값에 대해u뒤에 null 값 개수가 사용됨(예:[1,2,null,null,null,null,7,null,9]는ai1i2u4i7ni9h)Date:v뒤에 날짜 자체(예:v2010-01-01 12:45:10)haxe.ds.StringMap:b뒤에 이름-값 쌍,h로 종료(예:{"x" => 2, "k" => null}은by1:xi2y1:knh)haxe.ds.IntMap:q뒤에 키-값 쌍,h로 종료. 각 키는:<int>로 표현됨(예:{4 => null, 5 => 45, 6 => 7}은q:4n:5i45:6i7h)haxe.ds.ObjectMap:M뒤에 키와 값을 나타내는 직렬화된 값 쌍,h로 종료haxe.io.Bytes:s뒤에 base64 인코딩된 바이트 길이, 그 다음:와 코드A-Za-z0-9%를 사용한 바이트 표현(예:0과 같은 2바이트는s3:AAA,haxe.io.Bytes.ofString("Hello !")는s10:SGVsbG8gIQ)- 예외(exception):
x뒤에 예외 값 - 클래스 인스턴스:
c뒤에 직렬화된 클래스 이름, 필드의 이름-값 쌍,g로 종료(예: 두 정수 필드x와y를 가진new Point(0, 0)은cy5:Pointy1:xzy1:yzg) - enum 인스턴스(이름으로):
w뒤에 직렬화된 enum 이름, 직렬화된 생성자 이름,:, 인자 수, 인자 값들(예: 인자 없는Foo.A는wy3:Fooy1:A:0,Foo.B(4,null)은wy3:Fooy1:B:2i4n) - enum 인스턴스(인덱스로):
j뒤에 직렬화된 enum 이름,:, 생성자 인덱스(0부터 시작),:, 인자 수, 인자 값들(예: 인자 없는Foo.A는jy3:Foo:0:0,Foo.B(4,null)은jy3:Foo:1:2i4n) - 캐시 참조:
String:R뒤에 문자열 캐시의 해당 인덱스(예:R456)- 클래스, enum 또는 구조체:
r뒤에 객체 캐시의 해당 인덱스(예:r42)
- 커스텀:
C뒤에 클래스 이름, 커스텀 직렬화 데이터,g로 종료
캐시된 요소와 enum 생성자는 0부터 인덱싱됩니다.