美文网首页Java资料整理Java学习笔记Spring Boot
Java Jackson ObjectMapper字符串的序列化

Java Jackson ObjectMapper字符串的序列化

作者: 走在路上的小二 | 来源:发表于2017-06-27 16:59 被阅读2491次

    Jackson的readValue以及write的使用

    1.定义一个User对象
    
    public class User {
         private String name;
         private int age;
         private Date birthday;  //   没有使用jackson注解将会变成时间戳
         private String email;
         
        public User(String name, int age, Date birthday, String email) {
            this.name = name;
            this.age = age;
            this.birthday = birthday;
            this.email = email;
       }
    
         public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
    
        public Integer getAge() {  
            return age;  
        }  
        public void setAge(Integer age) {  
            this.age = age;  
        }  
    
        public Date getBirthday() {  
            return birthday;  
        }  
        public void setBirthday(Date birthday) {  
            this.birthday = birthday;  
        }  
    
        public String getEmail() {  
            return email;  
        }  
        public void setEmail(String email) {  
            this.email = email;  
        }  
    
      
    }
    
    2.使用jackson  的ObjectMapper 类中的 readValue()方法进行转换
    
    public class JsonTest  
    {  
         public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {  
             User user=new User("隔壁老王", 18, new Date(), "110");  
             User user1=new User("隔壁老王", 18, new Date(), "110");  
             List<User> list = new ArrayList<User>();
             list.add(user);
             list.add(user1);
    
            //转换器 
            ObjectMapper mapper = new ObjectMapper();  
              
            // 对象--json数据
            String json=mapper.writeValueAsString(user); //将对象转换成json 
            // 将json 字符串转成User类
            User u = mapper.readValue(json, User.class); 
           
           // 将json 字符串转化成List<User> 
           List<User> list1 = mapper.readValue(list, new TypeReference<List<People>>(){}f)
           // 其他的如将文件中转化成类的方法也相识 如 
          // readValue(File src, TypeReference valueTypeRef)
          // readValue(File src, Class<T> valueType)
        }
    }
    
    3.使用jackson  的ObjectMapper 类中的 writerValue()方法进行转换
    
    public class JsonTest  
    {  
         public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {  
             SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");  
             User user=new User("隔壁老王", 18, dateformat.parse("1996-10-01"), "110");  
             
             //转换器 
            ObjectMapper mapper = new ObjectMapper();  
            
            //User类转JSON 字符串
            String json = mapper.writeValueAsString(user);  
            System.out.println(json);  
           
            //Java集合转JSON 字符串 
            List<User> users = new ArrayList<User>();  
            users.add(user);  
            String jsonlist = mapper.writeValueAsString(users);  
            System.out.println(jsonlist);  
        }  
    
       }
    }
    
    
    4.使用jackson ObjectMapper获取具体json 字符串中某个key值对于的value
    
    // 假设 json字符串格式为 {content:{rendered: "23"}, titile:{rendered: "别跑"}}  则获取方式如下:
     ObjectMapper mapper = new ObjectMapper();
                mapper.readTree(content).forEach(jsonNode -> {
                    String renderedContent = jsonNode.path("content").path("rendered").asText("");
                    String title = jsonNode.path("title").path("rendered").asText("");
                });
    
    5.使用jackson  的提供了一系列注解
    
    @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
    @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
    @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
    

    PS: 如有有什么还需要补充的欢迎留下足迹。

    相关文章

      网友评论

        本文标题:Java Jackson ObjectMapper字符串的序列化

        本文链接:https://www.haomeiwen.com/subject/hayecxtx.html