您好,登錄后才能下訂單哦!
使用注解?@Message
?來(lái)讓你可以序列化你自己類中對(duì)象的?public 字段。
本代碼可以在?https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java?中下載到本地后進(jìn)行編譯測(cè)試。
package?com.insight.demo.msgpack; import?org.junit.Test; import?org.msgpack.MessagePack; import?org.msgpack.annotation.Message; import?org.slf4j.Logger; import?org.slf4j.LoggerFactory; import?java.util.UUID; import?static?org.junit.Assert.assertEquals; /** ?*?MessagePack6Objects ?* ?*?@author?yhu ?*/ public?class?MessagePack6Object?{ ????final?Logger?logger?=?LoggerFactory.getLogger(MessagePack6Object.class); ????/** ?????*?MessageData?Message?Object ?????*/ ????@Message?//?Annotation ????public?static?class?MessageData?{ ????????//?public?fields?are?serialized. ????????public?String?uuid; ????????public?String?name; ????????public?double?version; ????} ????/** ?????*?Test?MessagePack6Objects ?????*/ ????@Test ????public?void?testMessagePack6Objects()?{ ????????logger.debug("MessagePack6Objects?for?Objects"); ????????String?uuid?=?UUID.randomUUID().toString(); ????????//?INIT?OBJ ????????MessageData?src?=?new?MessageData(); ????????src.uuid?=?uuid; ????????src.name?=?"MessagePack6"; ????????src.version?=?0.6; ????????try?{ ????????????MessagePack?msgPack?=?new?MessagePack(); ????????????//?Serialization ????????????logger.debug("------?Serialization?------"); ????????????byte[]?bytes?=?msgPack.write(src); ????????????logger.debug("Bytes?Array?Length:?[{}]",?bytes.length); ????????????//?Deserialization ????????????logger.debug("------?Deserialization?------"); ????????????MessageData?dst?=?msgPack.read(bytes,?MessageData.class); ????????????logger.debug("Check?Object?for?UUID:?[{}]",?dst.uuid); ????????????assertEquals(uuid,?dst.uuid); ????????}?catch?(Exception?ex)?{ ????????????logger.error("MessagePack?Serialization?And?Deserialization?error",?ex); ????????} ????} }
?
如果你希望按照順序序列化多個(gè)對(duì)象的話,你可以使用??Packer
?和??Unpacker
?多個(gè)對(duì)象。
這是因?yàn)?MessagePack.write(Object)
?和?read(byte[])
?實(shí)際上每次都調(diào)用創(chuàng)建了?Packer
?和?Unpacker
?對(duì)象。
為了使用?Packer
?和??Unpacker
?對(duì)象,請(qǐng)調(diào)用?createPacker(OutputStream)?
和??createUnpacker(InputStream)
。
本代碼可以?https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Objects.java?中查看。
?
package?com.insight.demo.msgpack; import?org.junit.Test; import?org.msgpack.MessagePack; import?org.msgpack.annotation.Message; import?org.msgpack.packer.Packer; import?org.msgpack.unpacker.Unpacker; import?org.slf4j.Logger; import?org.slf4j.LoggerFactory; import?java.io.ByteArrayInputStream; import?java.io.ByteArrayOutputStream; import?java.util.UUID; import?static?org.junit.Assert.assertEquals; /** ?*?MessagePack6Objects ?* ?*?@author?yhu ?*/ public?class?MessagePack6Objects?{ ????final?Logger?logger?=?LoggerFactory.getLogger(MessagePack6Objects.class); ????/** ?????*?MessageData?Message?Objects ?????*/ ????@Message?//?Annotation ????public?static?class?MessageData?{ ????????//?public?fields?are?serialized. ????????public?String?uuid; ????????public?String?name; ????????public?double?version; ????} ????/** ?????*?Test?MessagePack6Objects ?????*/ ????@Test ????public?void?testMessagePack6Objects()?{ ????????logger.debug("MessagePack6Objects?for?Objects"); ????????String?uuid?=?UUID.randomUUID().toString(); ????????//?INIT?OBJ ????????MessageData?src1?=?new?MessageData(); ????????src1.uuid?=?uuid; ????????src1.name?=?"MessagePack6-src1"; ????????src1.version?=?0.6; ????????MessageData?src2?=?new?MessageData(); ????????src2.uuid?=?uuid; ????????src2.name?=?"MessagePack6-src2"; ????????src2.version?=?10.6; ????????MessageData?src3?=?new?MessageData(); ????????src3.uuid?=?uuid; ????????src3.name?=?"MessagePack6-src3"; ????????src3.version?=?1.6; ????????try?{ ????????????MessagePack?msgPack?=?new?MessagePack(); ????????????//?Serialization ????????????logger.debug("------?Serialization?------"); ????????????ByteArrayOutputStream?out?=?new?ByteArrayOutputStream(); ????????????Packer?packer?=?msgPack.createPacker(out); ????????????packer.write(src1); ????????????packer.write(src2); ????????????packer.write(src3); ????????????byte[]?bytes?=?out.toByteArray(); ????????????logger.debug("Bytes?Array?Length:?[{}]",?bytes.length); ????????????//?Deserialization ????????????logger.debug("------?Deserialization?------"); ????????????ByteArrayInputStream?in?=?new?ByteArrayInputStream(bytes); ????????????Unpacker?unpacker?=?msgPack.createUnpacker(in); ????????????MessageData?dst1?=?unpacker.read(MessageData.class); ????????????MessageData?dst2?=?unpacker.read(MessageData.class); ????????????MessageData?dst3?=?unpacker.read(MessageData.class); ????????????logger.debug("Check?Object?for?UUID:?[{}]",?dst1.uuid); ????????????assertEquals(uuid,?dst1.uuid); ????????}?catch?(Exception?ex)?{ ????????????logger.error("MessagePack?Serialization?And?Deserialization?error",?ex); ????????} ????} }
?
?
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。