是否支持反序列化修改值,例如:
List<Memo> list = JSON.parseObject(data,
new TypeReference<List<Memo>>() {
}.getType(),
processor);
private ExtraProcessor processor = (object, key, value) -> {
Log.d(TAG, "--------object = "+ object);
Log.d(TAG, "--------key = "+key);
Log.d(TAG, "--------value = "+value);
if (object instanceof Date) {
((Date) value).setTime(((Date) value).getTime() * 1000);
}
};
该方法需要修改Memo中的Data属性,将其值乘以1000,用来适配不同客户端之间的定义不同问题。测试时发现该方法processor方法体未执行,能否提供原因以及正确解法呢?
2条答案
按热度按时间cfh9epnr1#
ExtraProcessor默认是用来处理多余字段的。不是用来反序列化时修改值的。如果你想在反序列化之后修改date的值可以实现ObjectDeserializer。写了一个例子,有什么不好的,请指正
von4xj4u2#
@huxizhun 这可以写的更通用些吗,我看你deserialze方法中是写死了类型,set方法也是写死的,是否可以判断字段类型为Date,就乘以1000呢