클래스 Packer
/은 Unpacker
그 후의 조작에 도시 된 바와 같이, 변수를 직렬화 및 역 직렬화 다양한 유형을 허용한다. 이 클래스는 변수 및 기본 시퀀스 포장 형태 변수, 복수 종류의 직렬화 및 역 직렬화 가능 String
객체, byte[]
객체, ByteBuffer
메소드는 유사한 오브젝트.
위의 제안으로, 당신은 직렬화하고 자신의 객체 직렬화 복원, 개체가 자신의 사용을 필요로 제공 할 수 @Message
주석을.
패키지 com.insight.demo.msgpack; 수입 org.junit.Test; 수입 org.msgpack.MessagePack; 수입 org.msgpack.packer.Packer; 수입 org.msgpack.unpacker.Unpacker; 수입 org.slf4j.Logger; 수입 org.slf4j.LoggerFactory; 수입 java.io.ByteArrayInputStream의; 수입 java.io.ByteArrayOutputStream의; 수입 java.math.BigInteger의; 수입 된 java.nio.ByteBuffer; / ** * MessagePack6Types * * @author YHU * / 공용 클래스 MessagePack6Types { 최종 로거 로거 = LoggerFactory.getLogger (MessagePack6Types.class); / ** * 시험 MessagePack6Types * / @Test 공공 무효 testMessagePack6Types () { logger.debug ( "유형에 대한 testMessagePack6Types"); MessagePack msgpack = 새로운 MessagePack (); {시도 // // 직렬화 // ) (있는 ByteArrayOutputStream 아웃 = 새로운있는 ByteArrayOutputStream을; 패커 포장 = msgpack.createPacker (교체 아웃); 기본형 // 직렬화 값 (TRUE) packer.write; // 부울 값 packer.write (10); // INT 값 packer.write (10.5); // 두 값 // 프리미티브 래퍼 종류의 객체 직렬화 packer.write (는 Boolean.TRUE)를; packer.write (새로운 정수 (10)); packer.write (새 두 번 (10.5)); // 배열 된 다양한 형태의 직렬화 packer.write (신규 INT [{1, 2, 3, 4}); packer.write (새로운 더블 [] {10.5, 20.5}); packer.write (새로운 String [] { "대", "MSG", "팩", "자바"}); packer.write (새 바이트 [] {는 0x30, 0x31로 회신 아님, 0x32}); // 바이트 배열 // 다른 기준값의 다양한 유형의 직렬화 packer.write ( "MessagePack을"); // 문자열 오브젝트 packer.write (ByteBuffer.wrap (새 바이트 [] {는 0x30, 0x31로 회신 아님, 0x32})); // 객체의 ByteBuffer packer.write (BigInteger.ONE); // BigInteger의 객체 // // 직렬화 된 // 배열하기 // 바이트 [] 바이트 = out.toByteArray (); = 새이 InputStream (바이트)에서이 InputStream; 해석기 압축 해제 msgpack.createUnpacker = (투입); // 프리미티브 값을 부울 unpacker.readBoolean B = (); // 부울 값 의 INT unpacker.readInt I = (); // int 값 더블 D = unpacker.readDouble (); // 두 값 원시적 래퍼 값 // 부울 WB = unpacker.read (Boolean.class); 정수 WI = unpacker.read (Integer.class); 더블 WD = unpacker.read (Double.class); INT [] = IA unpacker.read (INT [] 클래스.); 더블 [] DA = unpacker.read. (더블 [] 클래스); 문자열 [] SA = unpacker.read (. 문자열 [] 클래스); 바이트 [] BA = unpacker.read (바이트 [] 클래스.); // 문자열 객체의 ByteBuffer 객체의 BigInteger 객체 목록 객체와지도 객체에 문자열 WS = unpacker.read (String.class); ByteBuffer를 BUF = unpacker.read (ByteBuffer.class); BigInteger의 BI = unpacker.read (BigInteger.class); } 캐치 (예외 예) { logger.error ( "MessagePack 직렬화 및 역 직렬화 오류", 예); } } }
상기 방법은 Packer#write()
데이터를 복수 종류의 시퀀스를 허용한다.
클래스 Unpacker
직렬화 바이너리 데이터 키 변수는 메소드 직렬화를 제공합니다. 예를 들어, 이진 데이터 직렬화하는 boolean
(또는 int
) 데이터 형식을, 당신이 사용할 수있는 (또는 ) 방법을.Unpacker
readBoolean
readInt
Unpacker
또한 기준 변수를 판독하는 방법을 제공한다. 이 방법은 바이너리 데이터로부터 역 직렬화 변수를 참조 할 수있다. 당신은 참조 변수가 매개 변수로 지정된 유형을 정의합니다. 예를 들어, 당신은에 바이너리 데이터를 직렬화하는 String
(또는 byte[]
) 객체를, 당신이 호출해야합니다 read(String.class)
(또는 read(byte[].class)
) 메소드 때 정의 설명.
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X