Spring Boot将text / javascript序列化为JSON
作者:互联网
我创建了以下Kotlin数据类:
@JsonInclude(JsonInclude.Include.NON_NULL)
public data class ITunesArtist(val artistName: String,
val artistId: Long, val artistLinkUrl: URL)
(数据类是Kotlin类,它在编译时自动生成equals,hashcode,toString等 – 节省时间).
现在我尝试使用Spring RestTemplate填充它:
@Test
fun loadArtist()
{
val restTemplate = RestTemplate()
val artist = restTemplate.getForObject(
"https://itunes.apple.com/search?term=howlin+wolf&entity=allArtist&limit=1", ITunesQueryResults::class.java);
println("Got artist: $artist")
}
它失败了:
Could not extract response: no suitable HttpMessageConverter found for response type
[class vampr.api.service.authorization.facebook.ITunesArtist]
and content type [text/javascript;charset=utf-8]
足够公平–JSON对象映射器可能期望mime类型的text / json.除了告诉RestTemplate映射到String :: class.java,然后手动实例化JacksonObjectMapper的实例,有没有办法告诉我的RestTemplate将返回的mime类型视为JSON?
解决方法:
您也可以使用:https://github.com/FasterXML/jackson-module-kotlin,而不是为数据类中的所有属性提供默认值
这个Jackson模块允许您序列化和反序列化Kotlin的数据类,而不必担心提供一个空的构造函数.
在Spring Boot应用程序中,您可以使用@Configuration类注册模块,如下所示:
@Configuration
class KotlinModuleConfiguration {
@Bean
fun kotlinModule(): KotlinModule {
return KotlinModule()
}
}
除此之外,您还可以使用文档中提到的扩展功能向Jackson注册模块.
除了支持数据类之外,您还将获得Kotlin stdlib中的几个类的支持,例如Pair.
标签:spring-rest,java,spring,spring-boot,kotlin 来源: https://codeday.me/bug/20190824/1706920.html