변수의 종류 직렬화 및 역 직렬화 된 0.6.x 복수 MessagePack 자바 (직렬화 / 역 직렬화)

클래스  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) 데이터 형식을, 당신이 사용할 수있는   (또는  ) 방법을.UnpackerreadBooleanreadInt

Unpacker 또한 기준 변수를 판독하는 방법을 제공한다. 이 방법은 바이너리 데이터로부터 역 직렬화 변수를 참조 할 수있다. 당신은 참조 변수가 매개 변수로 지정된 유형을 정의합니다. 예를 들어, 당신은에 바이너리 데이터를 직렬화하는  String (또는  byte[]) 객체를, 당신이 호출해야합니다  read(String.class) (또는  read(byte[].class)) 메소드 때 정의 설명.

 

https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

추천

출처www.cnblogs.com/huyuchengus/p/11314413.html