jsonJackson的使用

Posted 胖子学习天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonJackson的使用相关的知识,希望对你有一定的参考价值。

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"}

以上是关于jsonJackson的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android开发:JSON简介及最全面解析方法(GsonAS自带org.jsonJackson解析)

带有德语变音符号的 JSON Jackson + HTTPClient

微信小程序代码片段

webstorm代码片段的创建

使用 Git 来管理 Xcode 中的代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段