仅将 @JsonIgnore 用于生产,但在测试中它应该在那里

Joe*_*erg 0 java json jackson kotlin fasterxml

我在 Kotlin 中有一个这样的(数据)类。
在使用活动 Spring 配置文件运行应用程序时,live我只想返回name.
但是运行具有活动 Spring 配置文件的应用程序test,我想version显示出来,这样我就可以测试我是否得到了正确的版本。

data class MyClass( 

 val name: String

 @JsonIgnore
 val version: Number

)
Run Code Online (Sandbox Code Playgroud)

有可能吗?

dee*_*han 5

您可以使用不同的Jackson JSON 视图进行测试和生产环境。

data class MyClass( 
 @JsonView(Views.Prod.class,Views.Test.class)
 val name: String

 @JsonView(Views.Test.class)
 val version: Number

)
Run Code Online (Sandbox Code Playgroud)

并且您必须通过基于环境传递视图来手动处理序列化/反序列化。

MyClass class = mapper
      .readerWithView(Views.<Required-view>.class)
      .forType(MyClass.class)
      .readValue(json);
String result = mapper
      .writerWithView(Views.<Required-view>.class)
      .writeValueAsString(class);
Run Code Online (Sandbox Code Playgroud)