gpt4 book ai didi

java - Jackson 反序列化忽略属性无法与 @JsonView 正常工作

转载 作者:行者123 更新时间:2023-12-01 09:59:01 36 4
gpt4 key购买 nike

我正在使用spring-framework 4.2.5Jackson 2.6.3在我的应用程序中。我将 @jsonView 用于正确的序列化器实体。但它不适用于解串器。例如我有一个实体如下:

public class A {

@JsonView(View.Summary.class)
private int a;

@JsonView(View.Detail.class)
private int b

/*
* Getters And Setters
*/
}

现在我有一个 Controller 如下:

@RestController
@RequestMapping("/a")
public class AController {

@RequestMapping("/add")
@JsonView(View.Summary.class)
public void add(@RequestBoddy A a)
{
// do Something
}

}

当我向此方法发送如下 json 时:

{
"a": 1,
"b": 2
}

因为我在这个方法中使用了View.Summary.class JsonView,它必须忽略b,但事实并非如此。

我在对象映射器中使用配置如下:objectMapper.enable(DeserializerFeature.FAIL_ON_IGNORED_PROPERTIES)

问题出在哪里

最佳答案

在参数上使用@JsonView(View.Summary.class):

@RequestMapping("/add")
public void add(@RequestBoddy @JsonView(View.Summary.class) A a) {
// do Something
}

此外,为您的 DTO 使用 Nullable 类型:

public class A {
@JsonView(View.Summary.class)
private Integer a;

@JsonView(View.Detail.class)
private Integer b

/*
* Getters And Setters
*/
}

否则,您将无法区分默认值缺失值

关于java - Jackson 反序列化忽略属性无法与 @JsonView 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950881/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com