文档版权:Creative Commons 3.0许可证 署名-禁止演绎
Jackson序列化提供了对基本数据类型和简单Bean的序列化的支持, 以及对类继承的支持。
已经经过测试的数据类型包括:
Boolean/boolean
Long/long
Integer/int
Double/double
Short/short
Float/float
Byte/byte
java.util.Date
org.joda.time.DateTime
以及由这些基本数据类型组成的数组和Bean, 如 int[], String[]等.
jackson序列化使用
<dubbo:protocol name="dubbo" port="20880" serialization="jackson" />
自定义ObjectMapper
默认情况下,Jackson序列化和反序列化时所使用的ObjectMapper定义如下:
@Override
public ObjectMapper getObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
// objectMapper.disable(SerializationFeature.FLUSH_AFTER_WRITE_VALUE);
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.setTimeZone(TimeZone.getDefault());
return objectMapper;
}
如果需要自定义JacksonObjectMapperProvider, 开发者可以通过实现com.alibaba.dubbo.common.json.JacksonObjectMapperProvider接口进行自定义,并在/META-INF/dubbo/中添加文件 com.alibaba.dubbo.common.json.JacksonObjectMapperProvider,内容示例如下:
jackson=com.alibaba.dubbo.examples.jackson.jacksonprovider.CustomJacksonObjectMapperProvider
已知问题
- 不支持泛型对象的序列化, 如 List,Map类型的序列化和反序列化