<bdo id='6FbtB'></bdo><ul id='6FbtB'></ul>

    <small id='6FbtB'></small><noframes id='6FbtB'>

    <legend id='6FbtB'><style id='6FbtB'><dir id='6FbtB'><q id='6FbtB'></q></dir></style></legend>
  • <tfoot id='6FbtB'></tfoot>

      1. <i id='6FbtB'><tr id='6FbtB'><dt id='6FbtB'><q id='6FbtB'><span id='6FbtB'><b id='6FbtB'><form id='6FbtB'><ins id='6FbtB'></ins><ul id='6FbtB'></ul><sub id='6FbtB'></sub></form><legend id='6FbtB'></legend><bdo id='6FbtB'><pre id='6FbtB'><center id='6FbtB'></center></pre></bdo></b><th id='6FbtB'></th></span></q></dt></tr></i><div id='6FbtB'><tfoot id='6FbtB'></tfoot><dl id='6FbtB'><fieldset id='6FbtB'></fieldset></dl></div>
      2. java生成json实现隐藏掉关键属性

        时间:2023-12-10
          <tbody id='yxZ5Z'></tbody>

          <i id='yxZ5Z'><tr id='yxZ5Z'><dt id='yxZ5Z'><q id='yxZ5Z'><span id='yxZ5Z'><b id='yxZ5Z'><form id='yxZ5Z'><ins id='yxZ5Z'></ins><ul id='yxZ5Z'></ul><sub id='yxZ5Z'></sub></form><legend id='yxZ5Z'></legend><bdo id='yxZ5Z'><pre id='yxZ5Z'><center id='yxZ5Z'></center></pre></bdo></b><th id='yxZ5Z'></th></span></q></dt></tr></i><div id='yxZ5Z'><tfoot id='yxZ5Z'></tfoot><dl id='yxZ5Z'><fieldset id='yxZ5Z'></fieldset></dl></div>

              <tfoot id='yxZ5Z'></tfoot><legend id='yxZ5Z'><style id='yxZ5Z'><dir id='yxZ5Z'><q id='yxZ5Z'></q></dir></style></legend>
              • <bdo id='yxZ5Z'></bdo><ul id='yxZ5Z'></ul>

                <small id='yxZ5Z'></small><noframes id='yxZ5Z'>

                1. 生成 JSON 格式字符串通常使用的是 JSON 序列化器,Java 中最常用的序列化器是 Jackson。要隐藏关键属性,我们可以使用 Jackson 提供的注解 @JsonIgnore,该注解可以标记某个属性在序列化时不进行序列化。

                  下面是完整的攻略步骤:

                  步骤一:导入依赖

                  在 pom.xml 文件中导入 Jackson 相关的依赖。

                  <dependency>
                      <groupId>com.fasterxml.jackson.core</groupId>
                      <artifactId>jackson-databind</artifactId>
                      <version>2.12.4</version>
                  </dependency>
                  

                  步骤二:定义 JavaBean

                  定义一个 JavaBean,里面包含要隐藏的关键属性。

                  public class User {
                      private String name;
                      private Integer age;
                      @JsonIgnore
                      private String password;
                  
                      // 省略 getter/setter 方法
                  }
                  

                  上面的例子中,我们使用了 @JsonIgnore 注解标注了 password 属性,这个属性在序列化时将会被忽略。

                  步骤三:序列化 JavaBean

                  在代码中使用 Jackson 序列化器,把 JavaBean 序列化为 JSON 字符串。

                  ObjectMapper mapper = new ObjectMapper();
                  User user = new User();
                  user.setName("张三");
                  user.setAge(20);
                  user.setPassword("123456");
                  
                  String json = mapper.writeValueAsString(user);
                  System.out.println(json);
                  

                  输出的结果是:

                  {"name":"张三","age":20}
                  

                  可以看到,password 属性已经被忽略了。

                  示范一:spring boot中使用注解隐藏关键属性

                  在 Spring Boot 中使用 Jackson 的 @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 注解可以简单的隐藏关键属性。下面的例子演示了在 Spring Boot 中使用注解隐藏密码属性。

                  User 类中添加注解。

                  public class User {
                      private String name;
                      private Integer age;
                      @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
                      private String password;
                  
                      // 省略 getter/setter 方法
                  }
                  

                  在 Spring Boot 中写一个控制器,返回 User 对象。

                  @RestController
                  public class UserController {
                      @GetMapping("/user")
                      public User getUser() {
                          User user = new User();
                          user.setName("张三");
                          user.setAge(20);
                          user.setPassword("123456");
                          return user;
                      }
                  }
                  

                  当访问 /user 接口时,返回的 JSON 数据将不包含密码属性。

                  示范二:手动配置 ObjectMapper

                  在某些情况下,我们需要对一个已经存在的类做特殊处理,例如隐藏某些敏感信息。这时候,我们可以手动配置 ObjectMapper。

                  public class User {
                      private String name;
                      private Integer age;
                      private String password;
                  
                      // 省略 getter/setter 方法
                  }
                  
                  public class Main {
                      public static void main(String[] args) throws JsonProcessingException {
                          ObjectMapper mapper = new ObjectMapper();
                          SimpleBeanPropertyFilter simpleFilter = SimpleBeanPropertyFilter
                                  .serializeAllExcept("password");
                          FilterProvider filterProvider = new SimpleFilterProvider()
                                  .addFilter("myFilter", simpleFilter);
                          mapper.setFilterProvider(filterProvider);
                  
                          User user = new User();
                          user.setName("张三");
                          user.setAge(20);
                          user.setPassword("123456");
                  
                          String json = mapper.writerWithFilter(filterProvider).writeValueAsString(user);
                          System.out.println(json);
                      }
                  }
                  

                  在上面的代码中,我们自定义了一个 SimpleBeanPropertyFilter,并把它放到了一个 SimpleFilterProvider 中,添加了一个过滤器名字为 myFilter。然后,我们把整个 FilterProvider 设置到了 ObjectMapper 中。

                  当使用 writeValueAsString() 方法序列化对象时,我们指定了使用在 ObjectMapper 中定义的 myFilter 过滤器。这样,序列化后的 JSON 数据将不包含 password 属性。

                  上一篇:Java接口返回json如何忽略特定属性 下一篇:jsonp跨域获取百度联想词的方法分析

                  相关文章

                  <i id='FXEpF'><tr id='FXEpF'><dt id='FXEpF'><q id='FXEpF'><span id='FXEpF'><b id='FXEpF'><form id='FXEpF'><ins id='FXEpF'></ins><ul id='FXEpF'></ul><sub id='FXEpF'></sub></form><legend id='FXEpF'></legend><bdo id='FXEpF'><pre id='FXEpF'><center id='FXEpF'></center></pre></bdo></b><th id='FXEpF'></th></span></q></dt></tr></i><div id='FXEpF'><tfoot id='FXEpF'></tfoot><dl id='FXEpF'><fieldset id='FXEpF'></fieldset></dl></div>
                  • <bdo id='FXEpF'></bdo><ul id='FXEpF'></ul>

                    1. <legend id='FXEpF'><style id='FXEpF'><dir id='FXEpF'><q id='FXEpF'></q></dir></style></legend>

                      <tfoot id='FXEpF'></tfoot>

                      <small id='FXEpF'></small><noframes id='FXEpF'>