【问题标题】:Micronaut with Kotlin and Jackson's @JsonView annotation not working带有 Kotlin 和 Jackson 的 @JsonView 注释的 Micronaut 不起作用
【发布时间】:2020-04-01 19:38:30
【问题描述】:

我正在试验 Micronaut 和 Kotlin。

我有一个 Hibernate JPA 连接,它工作得很好,但是,在为它创建一个 REST API 时,我想从列表序列化中排除一些属性。

因此,这就是我所做的:

领域类:

@Entity
@JsonView
class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @NotNull
    @JsonView(View1::class)
    var id : Long? = null

    @NotNull
    @Column(unique = true, length = 64)
    @JsonView(View1::class)
    lateinit var email : String

    @NotNull
    @Column(length = 16)
    @JsonView(View2::class)
    lateinit var firstName : String

    @NotNull
    @Column(length = 16)
    @JsonView(View2::class)
    lateinit var lastName : String

    @NotNull
    @JsonView(View2::class)
    lateinit var address : Address

}

@Embeddable
class Address {

    @Column(length = 64)
    lateinit var street : String

    @Column(length = 32)
    lateinit var city : String

    @Column(length = 16)
    lateinit var state : String
}

View1 和 View2 并不有趣,因为根据文档,它们实际上是空类。

现在,在控制器中,我执行以下操作:

    @Get("/")
    @Produces("application/json")
    @JsonView(View1::class)
    fun list() : List<User> {
        return userRepository.findAll()
    }

期待一些合作,然而,这是我得到的:

[
    {
        "id": 1,
        "email": "john@doe.com",
        "firstName": "John",
        "lastName": "Doe",
        "address": {
            "street": "23, Madison Street",
            "city": "Brooklyn",
            "state": "NY"
        }
    }
]

在application.yml中,json-view应该正确设置如下:

jackson:
  json-view:
    enabled: true

有什么线索吗?

【问题讨论】:

    标签: java kotlin serialization jackson micronaut


    【解决方案1】:

    在遇到同样的问题后,我最终偶然发现了这个直接使用 ObjectMapper 的答案:Jackson's @JsonView annotation does not work

    问题是jackson.mapper.default-view-inclusion 属性的默认值为true。在 application.yml 中将其显式设置为 false 为我解决了这个问题。

    jackson:
      serializationInclusion: ALWAYS
      json-view:
        enabled: true
      mapper:
        default-view-inclusion: false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      相关资源
      最近更新 更多