Fastjson定製屬性的序列化和反序列化
問題
- 序列化屬性時,希望在屬性值後加些說明
- 將屬性值中的時間戳 Timestamp 反序列化為Date 型別
方法
使用fastjson序列化時,可以在bean物件的屬性上使用註解 @JSONField 做些序列化的規則,具體使用方法見參考資料。但有時候需要一些自定義化的序列化和反序列化方式,這時可以使用 serializeUsing 和 deserializeUsing 指定屬性的序列化類和反序列化類
示例程式碼
User bean定義,指定屬性序列化和反序列化方式
public class User {
private String name;
@JSONField(serializeUsing = AgeVauleSerializer.class)
private int age;
private String desc;
/**
* 自定義date反序列化方式,注意序列化時也會被序列化成時間戳
* 也可以用format="yyyy-MM-dd HH:mm:ss"定義序列化格式
*/
@JSONField(deserializeUsing = TimestampValueDeserializer.class)
private Date date;
……
//get、set方法省略
AgeVauleSerializer 定義屬性age的序列化方式。
public class AgeVauleSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
int features) throws IOException {
Integer value = (Integer) object;
String text = value + " year-old";
serializer.write(text);
}
}
TimestampValueDeserializer 定義屬性date的反序列化方式。
public class TimestampValueDeserializer implements ObjectDeserializer {
@Override
public Date deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
long timestamp = parser.getLexer().longValue();
return new Date(timestamp);
}
@Override
public int getFastMatchToken() {
return 0;
}
}
參考資料
相關文章
- FastJson bean序列化屬性順序問題ASTJSONBean
- fastjson反序列化漏洞ASTJSON
- Fastjson 反序列化漏洞史ASTJSON
- 【Fastjson】Fastjson反序列化由淺入深ASTJSON
- Android 中的Json解析工具fastjson 、序列化、反序列化AndroidJSONAST
- Fastjson反序列化漏洞復現ASTJSON
- fastjson反序列化-JdbcRowSetImpl利用鏈ASTJSONJDBC
- FastJson 序列化處理 null 值ASTJSONNull
- Jackson序列化日期型別的屬性型別
- FastJson整形資料反序列化的坑ASTJSON
- Java的序列化和反序列化Java
- JSON繼承JsonConverter序列化與反序列化重寫類屬性JSON繼承
- 在C#中使用Json.Net進行序列化和反序列化及定製化C#JSON
- python的序列化和反序列化Python
- PHP的序列化和反序列化入門PHP
- Fastjson 反序列化漏洞分析 1.2.25-1.2.47ASTJSON
- Fastjson1.2.24反序列化漏洞復現ASTJSON
- springbootredis自定義序列化方式(fastJson)Spring BootRedisASTJSON
- 解決fastjson反序列化時報錯的問題ASTJSON
- .NET物件的XML序列化和反序列化物件XML
- 物件(List<T>)的序列化和反序列化物件
- C++ 序列化和反序列化C++
- Fastjson反序列化漏洞分析 1.2.22-1.2.24ASTJSON
- Fastjson2基礎使用以及底層序列化/反序列化實現探究ASTJSON
- Java物件的序列化和反序列化實踐Java物件
- 從java的序列化和反序列化說起Java
- Java序列化和hessian序列化的區別Java
- 序列化和反序列化pickle和json 模組JSON
- [Java基礎]序列化和反序列化Java
- fastjson序列化日期自動增加了1年ASTJSON
- 烽火狼煙丨Fastjson反序列化漏洞風險提示ASTJSON
- FastJSON解析Json字串(反序列化為List、Map)ASTJSON字串
- fastjson:SerializerFeature屬性使用ASTJSON
- 從LocalDateTime序列化探討全域性一致性序列化LDA
- @JSON(name="members")//使用註釋語法來改變該屬性序列化後的屬性名JSON
- Python中物件序列化和反序列化Python物件
- C#序列化和反序列化(json)C#JSON
- 為什麼需要序列化和反序列化