将jackson注解与jsonpatch结合使用

6mw9ycah  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(268)

如果我在spring boot中有以下dto

public class PersonDto {

@JsonProperty(access = Access.READ_ONLY)
private Long id;

@NotBlank
private String name;

//@NotNull
@JsonProperty(access = Access.READ_ONLY)
private Integer age;
}

我想按照这个标准执行一个http补丁,这个标准是由jsonpatch库实现的,我会写这样的东西来获得补丁的jsonnode

JsonNode patched = patch.apply(objectMapper.convertValue(target, JsonNode.class));

但是,在执行以下修补程序操作时 @JsonProperty(access = Access.READ_ONLY) 不会产生任何影响(意味着年龄将设置为12岁)

[ {"op":"replace","path":"/age","value": 12} ]

后来我也试过以下方法

return objectMapper.treeToValue(patched, PersonDto.class)

但这里的年龄设置为空
因此,我希望实现的预期行为如下:
每当我收到一个试图替换'age'值的修补程序操作时,我希望该操作被忽略,因为age是只读的。
我知道我可以在控制器中创建if语句来检查每个补丁操作,如果它试图更改一个我想像age一样是只读的字段,则忽略它,但我更愿意使用jackson注解来执行此操作。这可能吗?
我确实遵循了这个教程,以防你想看看它

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题