Jackson序列化和反序列化

  1,下载Jackson工具包(jackson-core-2.2.3.jar  jackson-annotations-2.2.3.jar  jackson-databind-2.2.3.jar )

jackson-core-2.2.3.jar 核心包
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.2.3/jackson-core-2.2.3.jar

jackson-annotations-2.2.3.jar 提供Json注解支持
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.2.3/jackson-annotations-2.2.3.jar

jackson-databind-2.2.3.jar
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.2.3/jackson-databind-2.2.3.jar

  2,JSON序列化和反序列化使用的User类

package com.st.json;

import java.util.Date;

/**
 * @Description: JSON序列化和反序列化使用的User类
 * @author Mr.Li
 * @date 2018年4月21日 下午10:55:34
 */
public class User {

    /**
     * JSON注解 Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。
     *
     * @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
     * @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd
     *             HH-mm-ss")。
     * @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
     */

    private Integer id;
    private String name;
    private Integer age;
    private Date birthday;
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

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

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + ", birthday=" + birthday + ", email=" + email
                + "]";
    }

    public User(Integer id, String name, Integer age, Date birthday, String email) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
        this.email = email;
    }

    public User() {
        super();
        // TODO Auto-generated constructor stub
    }

}

  3,Jackson序列化和反序列化的使用

package com.st.json;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @Description: Jackson的使用   JSON[序列化]和[反序列化]
 * @author Mr.Li
 * @date 2018年4月21日 下午11:05:31
 */
public class JacksonDemo {

    public static void main(String[] args) throws ParseException, IOException {
        jsonTest();
    }

    /**
     * jackson序列化的使用
     * @throws ParseException
     * @throws JsonProcessingException
     */
    public static void jackTest() throws ParseException, JsonProcessingException {
        User u = new User();
        u.setId(1);
        u.setName("curry");
        u.setAge(30);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        u.setBirthday(dateFormat.parse("1988-9-21"));
        u.setEmail("[email protected]");

        /**
         * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
         * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。
         * writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。
         * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。
         * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。
         * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。
         */
        ObjectMapper mapper = new ObjectMapper();

        //User对象转Json,
        //输出{"id":1,"name":"curry","age":30,"birthday":590774400000,"email":"[email protected]"}
        String jsonValue = mapper.writeValueAsString(u);
        System.out.println(jsonValue);

        User u2 = new User();
        u2.setId(2);
        u2.setName("KD");
        u2.setAge(29);
        u2.setBirthday(dateFormat.parse("1989-9-21"));
        u2.setEmail("[email protected]");

        List<User> users = new ArrayList<>();
        users.add(u);
        users.add(u2);
        String jsonList = mapper.writeValueAsString(users);
        System.out.println(jsonList);

    }

    /**
     * JSON转Java对象[JSON反序列化]
     * @throws IOException
     * @throws JsonMappingException
     * @throws JsonParseException
     */

    public static void jsonTest() throws JsonParseException, JsonMappingException, IOException {
        String json = " {\"id\":3, \"name\":\"小明\", \"age\":18, \"birthday\":590774400000, \"email\":\"[email protected]\"} ";  

        /**
         * ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。
         */
        ObjectMapper mapper = new ObjectMapper();
        User user = mapper.readValue(json, User.class);
        System.out.println(user);
    }
}

  本文参考: https://blog.csdn.net/zmx729618/article/details/52161069

原文地址:https://www.cnblogs.com/QW-lzm/p/8904963.html

时间: 2024-10-05 20:16:56

Jackson序列化和反序列化的相关文章

Jackson序列化和反序列化Json数据完整示例

Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会出现各种类库,框架以及工具来解决这些基础的问题,Jackson就是这些工具中的一个,使用这个工具开发者完全可以从手工结束Json数据的重复劳动中解放出来.使用Jackson首先需要下载相应的类库,如下的Maven dependency列出了完整的POM dependency. 1 <dependen

Dubbo Jackson序列化使用说明

Jackson序列化提供了对基本数据类型和简单Bean的序列化的支持, 以及对类继承的支持. 已经经过测试的数据类型包括: Boolean/boolean Long/long Integer/int Double/double Short/short Float/float Byte/byte java.util.Date org.joda.time.DateTime 以及由这些基本数据类型组成的数组和Bean, 如 int[], String[]等. jackson序列化使用 <dubbo:p

Java下用Jackson进行JSON序列化和反序列化(转)

Java下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一.准备工作 首先去官网下载Jackson工具包,下载地址http://wiki.fasterxml.com/JacksonDownload.Jackson有1.x系列和2.x系列,截止目前2.x系列的最新版本是2.9.0,2.x系列有3个jar包需要下载: jackson-cor

jackson实现序列化的反序列化解析

现在项目开发过程中,字符串的传递成为前后端交互的主要方式,主要是因为字符串不会出现乱码等问题,传送方式是字节码传递,效率比实体较安全. 常见的Json类库有Gson.JSON-lib和Jackson,fastjson(阿里提供,自称效率最高的)等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一,下载jackson http://wiki.fasterxml.com/JacksonDownload 二

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory

Java Json 序列化与反序列化

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言. 下面介绍两款自己在开发中常用的处理Json的Java开源类库:Gson和Fastjson 1.Gso

springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化

以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序I/O这个过程中,包括网络I/O和磁盘I/O. 那么什么是http序列化和反序列化呢? 在使用springmvc时,我们经常会这样写: @RestController @RequestMapping("/users") public class UserController { @Auto

2.序列化与反序列化

Java 领域的对象如何传输 基于 socket 进行对象传输 先举个简单的例子,基于我们前面几次课程的只是,写一个 socket 通信的代码 User public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } SocketServerProvider public static

SpringBoot序列化与反序列化

目录 基础知识 序列化 jackson序列化规则 双向注解 @JsonIgnoreProperties @JsonProperty,@JsonGetter,@JsonSetter @JsonUnwrapped @JsonAnyGetter,@JsonAnySetter @JsonSerialize,@JsonDeserialize @JsonView 序列化注解 @JsonFormat @JsonIgnore @JsonIgnoreType @JsonInclude @JsonAutoDetec