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的開源和其作者。