码迷,mamicode.com
首页 > Web开发 > 详细

【json】Jackson的使用

时间:2018-04-27 18:08:24      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:time   string   重用   timezone   实例   for   etc   get   print   

Jackson所有的操作都是通过ObjectMapper对象实例来操作的,可以重用这个对象实例。

首先定义一个实例:
ObjectMapper mapper = new ObjectMapper();

定义一个Student类:

    package jackson;

    import java.util.Date;

    public class Student {

        private String name;
        private int age;
        private String position;
        private Date createTime;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getPosition() {
            return position;
        }

        public void setPosition(String position) {
            this.position = position;
        }

        public Date getCreateTime() {
            return createTime;
        }

        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }

        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + ", position="
                    + position + ", createTime=" + createTime + "]";
        }

    }

准备一个字符串:
String jsonString = "{\"name\":\"king\",\"age\":21}";

常规操作: 字符串转对象

     mapper.readValue(jsonString,Student.class);
     System.out.println(student);

打印输出结果:

Student [name=king, age=21, position=null, createTime=null]

常规操作: 对象转字符串

        student.setCreateTime(new Date());
        String json = mapper.writeValueAsString(student);
        System.out.println(json);

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":1524819355361}

如何改变输出的日期字段格式?

两种方式:一种SimpleDateFormat,另外一种通过在属性字段注解
在Student.java属性字段createTime注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")


import com.fasterxml.jackson.annotation.JsonFormat;

public class Student {

    private String name;
    private int age;
    private String position;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")  
    private Date createTime;
      
       //省略get,set
}

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":"2018-04-27 09:00:56"}

8小时时间差问题:上面打印结果发现,时间少8小时。

解决方法: 注解上增加时区。

public class Student {

    private String name;
    private int age;
    private String position;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")  
    private Date createTime;
        
        //省略get,set
}

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":"2018-04-27 17:07:33"}

【json】Jackson的使用

标签:time   string   重用   timezone   实例   for   etc   get   print   

原文地址:https://www.cnblogs.com/30go/p/8963290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!