天天看點

Xson:Java對象序列化和反序列化工具

1. Xson 介紹 

Xson是一個Java對象序列化和反序列化程式。支援Java對象到位元組數組的序列化,和從位元組數組到Java對象的反序列化。 

位址:https://github.com/xsonorg/xson 

2.應用場景 

可用于網絡傳輸和Java系統間通訊等。 

3.支援的對象類型 

1.Java POJO對象 

2.基本類型:byte,short,int,long,float,double,boolean,char 

3.包裝類型:Byte,Short,Integer,Long,Float,Double,Boolean,Character 

4.String 

5.Collection 

6.Map 

7.Enum 

8.TimeZone 

9.Class 

10.BigDecimal 

11.BigInteger 

12.Class 

13.StringBuffer 

14.StringBuilder 

15.URI 

16.URL 

17.UUID 

18.Locale 

19.Currency 

20.TimeZone 

21.java.util.Date 

22.java.sql.Date 

23.java.sql.Time 

24.java.sql.Timestamp 

25.InetAddress 

26.Inet4Address 

27.Inet6Address 

28.InetSocketAddress 

4.使用示例 

1.使用xson進行對象到位元組數組的序列化 

User user = new User();
//set....
byte[] data = XSON.write(user);
           

2.使用xson進行位元組數組到對象的反序列化 

//byte[] data = XSON.write(user);
User user = XSON.parse(data);
           

5.使用者擴充

1.在xson中添加使用者對象類型的描述和其Key值 

Map<String, String> prop = new HashMap<String, String>();
prop.put("org.xson.testmodel.XUser7", "x7");
prop.put("org.xson.testmodel.XUser6", "x6");
XsonSupport.addCustomAgreementType(prop);
           

說明:由于xson序列化後的byte[]中儲存Class資訊用以用于反序列化操作,比如一個POJO對象User, 

全類名比如叫:org.xson.api.User,那麼XSON.write(user)到達的byte[]中則儲存着"org.xson.api.User"的 

描述,但由于"org.xson.api.User"需要占用數個位元組,為了減少byte[]體積,是以可使用上述方式通過給出 

一個key值來代替"org.xson.api.User",以實作縮小體積的目标。 

注意: 

1.請在使用序列化的反序列化之前操作 

2.如果序列化的結果用作雙方通訊,請確定使用雙方對象類型和Key值的一緻性 

2.使用者自定義序列化器 

public class CustomerSerializer implements XsonWriter {
    @Override
    public void write(Object target, ByteModel model) {
         // Implementation code
    }
}
           

 3.使用者自定義反序列化器 

public class CustomerDeserializer implements XsonReader {
    @Override
    public Object read(ReaderModel model) {
         // Implementation code
         return null;
    }
}
           

4.在xson中添加使用者自定義的序列化器和反序列化器

XsonSupport.addCustomSupportType(XUser1.class, new CustomerSerializer(), new CustomerDeserializer());
           

希望感興趣的朋友能夠參與和關注此項目,同時也希望得到大家的建議和幫助。

通訊郵箱:[email protected]

感謝:本項目的實作參考Fastjson的原理和部分結構,感謝Fastjson的開源和其作者。 

繼續閱讀