`

Jackson学习一之对象与JSON互相转化

 
阅读更多
原文地址:http://lijingshou.iteye.com/blog/2003020



Jackson是一个流行的基于Java的JSON处理框架
官方wiki:http://wiki.fasterxml.com/JacksonInFiveMinutes
官方文档:http://wiki.fasterxml.com/JacksonDocumentation
学习参考: Json转换利器Gson之实例 系列,顺便也学习一下GSON

本篇简介如何使用Jackson进行Java对象与JSON的互相转换
新建基本Student类:
Java代码  收藏代码
package com.jingshou.pojo; 
 
import java.util.Date; 
 
public class Student { 
    private int id; 
    private String name; 
    private Date birthDay; 
 
    public int getId() { 
        return id; 
    } 
 
    public void setId(int id) { 
        this.id = id; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public Date getBirthDay() { 
        return birthDay; 
    } 
 
    public void setBirthDay(Date birthDay) { 
        this.birthDay = birthDay; 
    } 
 
    @Override 
    public String toString() { 
        return "Student [birthDay=" + birthDay + ", id=" + id + ", name=" 
                + name + "]"; 
    } 
 

班级类:
Java代码  收藏代码
package com.jingshou.pojo; 
 
import java.util.List; 
 
public class Class { 
    private String cname; 
    private List<Student> members; 
    public String getCname() { 
        return cname; 
    } 
    public void setCname(String cname) { 
        this.cname = cname; 
    } 
    public List<Student> getMembers() { 
        return members; 
    } 
    public void setMembers(List<Student> members) { 
        this.members = members; 
    } 
     
    public String toString(){ 
        return "The Class Name is: " + cname + " " + "The members are: " + members; 
         
    } 
     
 


测试代码:
Java代码  收藏代码
package com.jingshou.jackson; 
 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.jingshou.pojo.Class; 
import com.jingshou.pojo.Student; 
 
public class JacksonTest1 { 
 
    public static void main(String[] args) throws IOException { 
        Student student1 = new Student();   
        student1.setId(5237); 
        student1.setName("jingshou"); 
        student1.setBirthDay(new Date()); 
         
        ObjectMapper mapper = new ObjectMapper(); 
         
        // Convert object to JSON string 
        String Json =  mapper.writeValueAsString(student1); 
        System.out.println("Change Object to JSON String: " + Json); 
         
        // Convert Json string to Object 
        Student student2 = mapper.readValue(Json, Student.class); 
        System.out.println(student2); 
         
        // Create a student list add it to Bj 
        Student student3 = new Student();   
        student3.setId(5117);   
        student3.setName("saiya");   
        student3.setBirthDay(new Date());   
   
        List<Student> stuList = new ArrayList<Student>(); 
        stuList.add(student1); 
        stuList.add(student3); 
         
        Class bj = new Class(); 
        bj.setCname("五年二班"); 
        bj.setMembers(stuList); 
         
        String json2 = mapper.writeValueAsString(bj); 
        System.out.println("The JSON from Class is: " + json2); 
         
        Class bj2 = mapper.readValue(json2, Class.class); 
        System.out.println(bj2); 
         
 
    } 
 

运行结果:
Text代码  收藏代码
Change Object to JSON String: {"id":5237,"name":"jingshou","birthDay":1389513906622} 
Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou] 
The JSON from Class is: {"cname":"五年二班","members":[{"id":5237,"name":"jingshou","birthDay":1389513906622},{"id":5117,"name":"saiya","birthDay":1389513906859}]} 
The Class Name is: 五年二班 The members are: [Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5117, name=saiya]] 

小结:
转换的关键就是ObjectMapper
在使用ObjectMapper对象readValue或者writeValue的时候,JSON可以以字符串的形式传入,也可以以文件的形式传入,官方的例子是让将JSON保存在文件中
明显JSON字串中的key与Java类中的field名字应该要相同
Student类如果有自定义构造函数的时候,进行JSON->对象转换会出错,接下去再研究这个问题..
Date域是以long类型输出的,有必要的话,需要进行格式转换
本文出自"lijingshou"博客,请务必保留此出处http://lijingshou.iteye.com/blog/2003020
分享到:
评论

相关推荐

    Java对象与Json之间的互相转换的jar包

    这个"Java对象与Json之间的互相转换的jar包"正是提供了这样的功能。 这个jar包可能包含了如Jackson、Gson、Fastjson等流行的Java JSON库,它们各自提供了丰富的API来方便开发者进行对象与JSON的转换。 1. Jackson...

    json与对象相互转换系列处理

    以下是对JSON与对象相互转换的一些详细说明: 1. **Python中的JSON操作**: - `json.dumps()`: 序列化对象到JSON字符串。例如,`json.dumps(obj, ensure_ascii=False)`可以将Python对象转化为JSON字符串,`ensure_...

    jackson json与obj相互转换 忽略json中不存在的字段

    webservice接口开发中,厂家提供的json格式,json与obj的相互转化,相信大家都很熟悉,考虑到厂家提供的接口会随着版本的不同,字段也会相应的增加,这个时候进行对象的转换就不能保证json与obj转换是一一对应的,...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    是开源库Apache Commons的一个组件,提供了Java对象与JSON对象之间的转换功能。下面将详细阐述如何使用`JSONObject`进行JSON操作。 ### 1. 解析JSON字符串 当你从服务器获取或从文件读取到一个JSON字符串时,可以...

    json 转化工具类

    1. **Jackson库**:Jackson是Java中最常用的JSON库之一,它提供了`ObjectMapper`类来实现JSON与Java对象的转换。例如,可以使用`readValue()`方法将JSON字符串转化为Java对象,`writeValueAsString()`方法将Java对象...

    JAVA json 与java类相互转化 所有jar包

    以下是对JSON与Java类相互转化的详细讲解: 1. **Jackson库**: Jackson是Java中非常流行的JSON处理库,由 FasterXML 维护。它提供了`ObjectMapper`类来实现Java对象到JSON和JSON到Java对象的转换。 - **对象转...

    对象转化json资源包,支持对象间的转化

    阿里巴巴团队开发的Fastjson库,正是针对Java平台的一个高性能、易用的JSON库,旨在简化对象与JSON字符串之间的相互转换过程。 Fastjson的核心功能在于其高效的对象转化能力。它能够快速地将Java对象转化为JSON字符...

    json转化依赖的jar文件

    在Java编程环境中,处理JSON数据通常需要依赖特定的库,这些库提供了将JSON字符串与Java对象之间相互转换的功能。本资源包含的"json依赖的jar包"正是为了满足这一需求。 一、JSON的基本结构与类型 1. JSON对象:以...

    转json对象jar包

    在这个场景中,我们使用的是一款能够帮助我们将Java对象转化成JSON的jar包,这通常涉及到一些库,如Jackson、Gson或Fastjson等。 标题"转json对象jar包"提示我们,这个jar包提供了将Java对象转换为JSON字符串的功能...

    JSON字符串和java对象的相互转换

    在Java开发中,JSON字符串与Java对象之间的相互转换是常见的操作,特别是在网络通信、数据存储以及API接口设计等领域。 JSON字符串转Java对象: 在Java中,我们通常使用第三方库如Jackson、Gson、Fastjson等来实现...

    Testjackson staxon json与xml 转换 源码

    Testjackson项目就是针对这种需求的一个示例,它使用Staxon库和Jackson库来实现JSON与XML的相互转换,并且提供了完整的源码供学习和参考。 首先,Jackson是一个流行的Java库,用于处理JSON数据。它提供了一套全面的...

    json必须的jar文件,用json传输的来看看

    在Java开发中,为了处理JSON数据,通常需要引入特定的库,如Jackson、Gson、org.json等,这些库提供了方便的API来解析、生成和操作JSON对象。在您提供的信息中,"json必须的jar文件"可能指的是这些库的二进制jar包,...

    json和map互转jackson和json-lib两种方式实现和区别

    在Java中,我们经常需要将JSON字符串与Map对象互相转换,以便处理数据。本篇文章将详细探讨使用Jackson库和json-lib库这两种流行的方式进行转换,并分析它们之间的差异。 **一、Jackson库** Jackson是Java开发的高...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13札包

    这个模块提供了ObjectMapper类,它是Jackson库中的核心类,负责实现Java对象与JSON之间的相互转换。通过ObjectMapper,我们可以方便地实现POJO(Plain Old Java Object)到JSON字符串的序列化,以及JSON字符串到POJO...

    (Java)json和String互转必备Jar包

    2. **Jackson库**:另一个常用的JSON处理库是Jackson,它提供了丰富的API,包括`ObjectMapper`类,可以实现Java对象和JSON的相互转换。例如,`objectMapper.writeValueAsString()`可以将Java对象转化为JSON字符串,...

    JSON 转BEAN 工具包

    2. 使用JSON库进行解析:Java有许多流行的JSON库,如Jackson、Gson、Fastjson等,它们提供了将JSON字符串转换为BEAN对象的方法。例如,使用Gson库: ```java Gson gson = new Gson(); User user = gson.fromJson...

    jackson2.6 (3个包)

    Jackson是Java领域中广泛使用的库,它主要用于处理JSON数据,实现了JSON与Java对象之间的相互转换。这个名为"jackson2.6"的压缩包包含了Jackson库的2.6版本,通常包括了核心组件、注解模块和数据绑定模块等关键部分...

    将集合转换为Json的相关jar包

    通过引入如Jackson、Gson和Fastjson这样的库,开发者能够轻松地处理JSON与Java集合间的相互转换,从而提升应用程序的性能和用户体验。在实际项目中,选择合适的库应考虑性能、易用性和社区支持等因素。

    jackson-mapper-asl-1.9.11.jar

    在Java开发领域,数据序列化和反序列化是至关重要的环节,Jackson库就是一款广泛使用的JSON处理框架,其中`jackson-mapper-asl-1.9.11.jar`是Jackson的一个关键组件,专门负责对象到JSON以及JSON到对象的映射。...

    org.json包2015年12月

    总结来说,`org.json`包为Java开发者提供了一套便捷的JSON处理工具,通过简单的API实现了JSON对象和数组的操作,以及与Java数据结构的相互转换。尽管此版本已有些许年份,但对于理解JSON处理的基本原理和实践仍然极...

Global site tag (gtag.js) - Google Analytics