Java中使用Jackson进行JSON解析和序列化

Java中使用Jackson进行JSON解析和序列化

1.添加依赖,在Maven的pom.xml文件中添加以下依赖

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

2.封装JSON解析和序列化工具类

import java.io.IOException;
import java.util.List;

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

// JSON/对象转换类
public class JsonUtils {

    // 定义jackson对象
    private static ObjectMapper MAPPER=new ObjectMapper();

    // 将对象转换成json字符串
    public static String objectToJson(Object obj){
        try {
            String str=MAPPER.writeValueAsString(obj);
            return str;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 将json数据转换成pojo对象
    public static <T> T jsonToObject(String json,Class<T> beanType){
        try {
            T t=MAPPER.readValue(json, beanType);
            return t;
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 将json数据转换成pojo对象list
    public static <T> List<T> jsonToList(String json,Class<T> beanType){
        JavaType javaType=MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try{
            List<T> list=MAPPER.readValue(json, javaType);
            return list;
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
}

3.使用
(1)自定义对象:User

import java.util.Date;

public class User {
    private String name;
    private Integer age;
    private Date birthday;
    private String 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;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", birthday=" + birthday + ", email=" + email + "]";
    }

}

(2)工具类的使用

I.序列化对象
List<User> users=new ArrayList<User>();
        for(int i=0;i<20;i++){
            User user=new User();
            user.setName("Apple"+i);
            user.setAge(20+i);
            SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
            user.setBirthday(dateformat.parse("1991-10-01"));
            user.setEmail("12345678"+i+"@qq.com");

          //  序列化单个对象
            // String json=JsonUtils.objectToJson(user);

            users.add(user);

            // 序列化对象列表
            String json=JsonUtils.objectToJson(users);
       System.out.println(json);
    }

II.反序列化对象
// 反序列化单个对象

User u=JsonUtils.jsonToObject(record.value(), User.class);
System.out.println(u.toString());

// 序列化对象列表
List<User> list=JsonUtils.jsonToList(record.value(), User.class);
System.out.println(list);

原文地址:http://blog.51cto.com/59465168/2324332

时间: 2024-08-25 08:44:05

Java中使用Jackson进行JSON解析和序列化的相关文章

Java下利用Jackson进行JSON解析和序列化

ava下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一.准备工作 Jackson有1.x系列和2.x系列,2.x系列有3个jar包需要下载:jackson-core-2.2.3.jar(核心jar包)jackson-annotations-2.2.3.jar(该包提供Json注解支持)jackson-databind-2.2.3.ja

Java下利用Jackson进行JSON解析和序列化1

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.2.3,2.x系列有3个jar包需要下载: jackson-cor

java中构造方法和方法全面解析

java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望大家多多讨论.          构造方法和方法的区别: 构造方法要与类名相同,无返回类型,在类初始化的时候调用.      方法最好与类名不同,对象调用,静态方法可用类名.方法(). 构造器和方法在下面三个方面区别:修饰符,返回值,命名. 1.和方法一样,构造器可以有任何访问的修饰: public

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

Java 中使用Jackson反序列化

Build.gradle: compile group: 'org.codehaus.jackson', name: 'jackson-mapper-lgpl', version: '1.9.13' compile group: 'org.codehaus.jackson', name: 'jackson-core-lgpl', version: '1.0.1' compile group: 'httpunit', name: 'httpunit', version: '1.3' 分别引用jac

在Java中使用xpath对xml解析

xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素,属性,文本,处理指令,注释,根节点,命名空间以及节点关系有一定的了解以及对xpath也有了解.XML学习地址:http://www.runoob.com/xml/xml-tutorial.htmlxpath基本语法学习地址:http://www.runoob.com/xpath/xpath-tut

Java中String对象的传递解析

话不多说了,直接上代码. public class Demo { // static String str = "hello world!"; // static String str = new String("hello world!"); // static char[] ch = new char[]{'A','B','C'}; public static void test(String str,char[] ch,int a) { System.out.

JSON解析与序列化

JSON之所以流行,拥有与JavaScript类似的语法并不是全部原因.更重要的一个原因是,可以把JSON数据结构解析为有用的 JavaScript对象.与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON可以解析为JavaScript对象的优势极其明 显. JSON对象 早期的JSON解析器基本上就是使用JavaScript的eval()函数.由于JSON是JavaScript语法的子集,因此eval()函 数可以解析.解释并返回JavaScript对象和数组.ECMASc

java中使用net.sf.json对json进行解析

net.sf.json依赖的包很多. 有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar /** * 从一个JSON 对象字符格式中得到一个java对象,形如: * {"id" : idValue, "name" : nameValue, "aBean" : {&qu