为了账号安全,请及时绑定邮箱和手机立即绑定

@JsonView注释不起作用

@JsonView注释不起作用

三国纷争 2021-04-26 17:41:22
我正在尝试使用@JsonView注释从Spring中的对象反序列化几个字段。但是,我将注释添加到我的方法中,而不是反序列化指定字段,而是返回一个空对象。这是我的POJO:@Entitydata class Album(        @JsonView(View.AlbumSummary::class)        val title: String,        @JsonView(View.AlbumSummary::class)        @ManyToMany        val artists: List<Account>,        val dateReleased: LocalDate,        val genre: String = GENRE_NA,        @OneToMany(mappedBy = "album")        val songs: List<Song> = ArrayList(),        val description: String = "")而且,实现@JsonView注释的方法:@JsonView(View.AlbumSummary::class)@RequestMapping("/home-recommendations/{userId}")fun getHomeRecommendations(@PathVariable userId: String): List<Recommendation> {    val recommendations = ArrayList<Recommendation>()    val user = accountRepository.findById(userId).get()    val followingArtists = user.following.filter {        it.following.isArtist    }    val suggestedArtists = followingArtists.shuffled().take(Random().nextInt(11) + 10)    for (i in 0 until suggestedArtists.size) {        val suggestedArtist = suggestedArtists[i].following        val recommendedAlbums = suggestedArtist.albums.shuffled().take(Random().nextInt(6) + 10)        recommendations.add(Recommendation("Because you listened to ${suggestedArtist.fullName}", Recommendation.TYPE_ALBUM, albums = recommendedAlbums))    }    return recommendations}
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

  1. FasterXML文档中所述。如果使用proguard,可能会去除kotlin.Metadata批注,以防止反序列化。添加一个proguard规则来保留kotlin.Metadata类:-keep class kotlin.Metadata { *; }

  2. 尝试使用 @field:JsonView(View.AlbumSummary::class)


查看完整回答
反对 回复 2021-05-12
?
慕神8447489

TA贡献1780条经验 获得超1个赞

我遇到了同样的问题,只有在将字段移出构造函数并移到类主体中之后,JsonView才起作用。在这种情况下,您不会使用数据类,但仍可以将equals哈希码toString委派给私有内部数据类。


查看完整回答
反对 回复 2021-05-12
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

确保您的类路径上具有用于Kotlin的Jackson模块,并且已在ObjectMapper实例上注册。


查看完整回答
反对 回复 2021-05-12
  • 3 回答
  • 0 关注
  • 445 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信