gpt4 book ai didi

spring-boot - 如何在 Spring Boot 响应控件中删除对象的某些字段?

转载 作者:行者123 更新时间:2023-12-05 08:40:27 25 4
gpt4 key购买 nike

这是我的 REST Controller 之一,

@RestController
@RequestMapping("/users/Ache")
public class Users {
@GetMapping
public User getUser() {
User user = new User();
return user;
}
}

作为响应,Spring boot 会将我的对象转换为 JSON,这是回应:

{
"username": "Ache",
"password": "eee",
"token": "W0wpuLAUQCwIH1r2ab85gWdJOiy2cp",
"email": null,
"birthday": null,
"createDatetime": "2019-03-15T01:39:11.000+0000",
"updateDatetime": null,
"phoneNumber": null
}

我想删除 passwordtoken 字段,我该怎么做?

我知道两种困难的方法:

  • 创建一个新的 HashMap

    并添加了一些必要的字段,但是太复杂了

  • 将这两个字段设置为空
    但它仍然留下两个空值字段,太丑了。

有更好的解决方案吗?

最佳答案

Spring 默认利用 Jackson 库进行 JSON 编码。想到的最简单的解决方案是使用 Jackson 的 @JsonIgnore,但这会忽略序列化和反序列化的属性。因此,正确的方法是使用 @JsonProperty(access = Access.WRITE_ONLY) 注释该字段。

例如,在一个假设的用户类中:

@JsonProperty(access = Access.WRITE_ONLY)
private String password;

@JsonProperty(access = Access.WRITE_ONLY)
private String token;

另一种方法是仅在 getter 上使用 @JsonIgnore:

@JsonIgnore
public String getPassword() {
return this.password;
}

您还可以创建另一个类,例如 UserResponse,其中包含除 passwordtoken 之外的所有字段,并将其设为您的返回类型。当然,它涉及创建一个对象并填充它,但是您可以在没有 Jackson 注释的情况下保持 User 类干净,并将您的模型与您的表示分离。

关于spring-boot - 如何在 Spring Boot 响应控件中删除对象的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166779/

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