猿问

@JsonView注释不起作用

我正在尝试使用@JsonView注释从Spring中的对象反序列化几个字段。但是,我将注释添加到我的方法中,而不是反序列化指定字段,而是返回一个空对象。


这是我的POJO:


@Entity

data 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


}


三国纷争
浏览 446回答 3
3回答

犯罪嫌疑人X

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

慕神8447489

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

哈士奇WWW

确保您的类路径上具有用于Kotlin的Jackson模块,并且已在ObjectMapper实例上注册。
随时随地看视频慕课网APP

相关分类

Java
我要回答