0
点赞
收藏
分享

微信扫一扫

有关WSL和docker的介绍

人间四月天i 2024-09-13 阅读 17
json

        有些小伙伴发现了,明明在返回的实体类中指定了属性为transient。为什么前端得到的返回json中还是有这个属性的值?

类:

 返回结果:

1. 序列化是什么?

1.1 是什么?

1.2 主要目的

1.3  Java 中的序列化


2. transient 是什么?

3. transient 关键字在JSON序列化的问题


4. 替代方案


        为了在 JSON 序列化中排除某些字段,可以使用 JSON 序列化库提供的注解和方法。以下是常见的替代方案:既然是JSON不会识别transient 。那就用JSON能否识别的方式进行处理


4.1 使用 Jackson 的 @JsonIgnore


Jackson 提供了 @JsonIgnore 注解来控制哪些字段应该被序列化到 JSON 中。这是一个非常直观且易于理解的方法。


4.2 示例代码


假设你有一个 User 类,并且你不希望将 password 字段包含在 JSON 输出中。

import com.fasterxml.jackson.annotation.JsonIgnore;

@Data
public class User {
     public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
    private String username;

    @JsonIgnore
    private String password;

   
}

4.3 控制器类 UserController


假设你有一个控制器类 UserController,用于返回 User 对象。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@RestController
public class UserController {

    @GetMapping("/user")
    public R getUser() {
        User user = new User("Alice", "secret");

        return R.data(user);
    }
}

4.4 输出结果


当你通过浏览器或工具访问 /user 接口时,返回的 JSON 将不再包含 password 字段。

5. 总结

举报

相关推荐

0 条评论