问题
使用kotlin作为SpringBoot的开发语音后,由于Kotlin语音的特性(自定义的类有主构造器的没有无参构造器),会造成Jackson在序列化JSON的时候报错。
1
| (No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator
|
解决方案
其实只需要配置Jackson支持kotlin的序列化就可以了,并且jackson提供了kotlin-module依赖
依赖
jackson-module-kotlin
gradle(kotlin)
1
| implementation("com.fasterxml.jackson.module:jackson-module-kotlin:last-version")
|
gradle(groovy)
1
| implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: 'last-version'
|
maven
1 2 3 4 5
| <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> <version>last-version</version> </dependency>
|
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Configuration class AppConfig { @Bean fun customJackson2HttpMessageConverter(): MappingJackson2HttpMessageConverter { val jsonConverter = MappingJackson2HttpMessageConverter() val objectMapper = ObjectMapper() objectMapper.registerModule(kotlinModule()) jsonConverter.objectMapper = objectMapper return jsonConverter } }
|