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

本文介绍如何使用Jackson框架实现Java对象与JSON的互相转换,通过创建基本的Student类和班级类,并提供测试代码来演示转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值