当前位置: 首页 > 知识库问答 >
问题:

Kotlin和Jackson的@JsonView注释不起作用的Micronaut

杜海
2023-03-14

我正在试验Micronaut和Kotlin。

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

因此,以下是我所做的:

域类:

@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"
        }
    }
]

在应用程序中。yml、json视图应正确设置为:

jackson:
  json-view:
    enabled: true

有线索吗?

共有1个答案

宋建本
2023-03-14

在遇到同样的问题后,我最终偶然发现了这个直接使用ObjectMapper的答案:Jackson的@JsonView注释不起作用。

问题是,jackson。制图员。默认视图包含属性的默认值为true。在应用程序中将其显式设置为false。yml为我解决了这个问题。

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

 类似资料:
  • 我有一个简单的类叫BeaconDao 然而,当我用@service或@component标记beaconDao时,一切都运行得非常好。有人能看出问题所在吗?

  • kotlin 1.2.10 Jackson-Module-kotlin:2.9.0 根据下面的答案,下面的工作对我来说

  • 问题内容: 我正在尝试使用Java批注,但似乎无法使我的代码认识到其中存在。我究竟做错了什么? 问题答案: 您需要使用注释界面上的@Retention注释将注释指定为运行时注释。 即

  • 我已经在google上搜索了将近一天这个问题,并尝试了几个修复(包括StackOverflow的4或5个),但都没有成功。我有一个带注释的POJO,用于Jackson 2.10.2 我使用这个POJO为一些外部请求创建XML。一切都很好,但现在我需要重新排序生成的XML中的字段,似乎什么都不起作用。 我首先尝试在班级层面进行设置: 然后,我尝试使用以下命令设置每个字段的顺序: 我还尝试在所有字段上

  • 问题内容: 什么样的配置是需要使用注解来自像,等等?这是我的代码: 当我尝试在另一个类中使用它时,验证不起作用(即,创建该对象时没有错误): 为什么这不适用和的约束?我还需要做什么? 问题答案: 为了使JSR-303 bean验证在Spring中起作用,您需要做一些事情: 注释的MVC名称空间配置: JSR-303规范JAR :(看起来您已经拥有了) 规范的实现,例如休眠验证,它似乎是最常用的示例

  • 问题内容: 我知道有一些关于此的帖子,但是它们大约一年了,没有任何回应。实际上,我们在PostgreSQL 8.4上使用的是Hibernate 4.2.1.Final。我们有两个这样的实体 实体A(顶级层次结构类) 实体B(子类) 如您所见,使用注释了一个实体,但是当使用来获取顶级类时 我们也通过属性获得了B子类。实际上,SQL语句包含。这仍然是Hibernate第四版中的错误,还是我做错了什么?