Java对象与Json之间的转换
使用Jackson的ObjectMapper对象的readValue和writeValueAsString方法可以进行转换。
对于简单基本类型或String类型的对象,使用上述方法可以满足。
但是如果要转换复杂类型Collection如 List<YourBean>,那么就需要先反序列化复杂类型为泛型的Collection Type。
如果是ArrayList<YourBean>那么使用ObjectMapper 的getTypeFactory().constructParametricType(collectionClass, elementClasses);
如果是HashMap<String,YourBean>那么 ObjectMapper 的getTypeFactory().constructParametricType(HashMap.class,String.class, YourBean.class);
例子如下,定义两个模型
package com.khlin.com.khlin.jackson.json.test;
import java.util.List;
public class Student {
private String familyname;
private String lastname;
private int age;
private String[] familyMembers;
private Place hometown;
public Place getHometown() {
return hometown;
}
public void setHometown(Place hometown) {
this.hometown = hometown;
}
public List<Place> getFavoritePlaces() {
return favoritePlaces;
}
public void setFavoritePlaces(List<Place> favoritePlaces) {
this.favoritePlaces = favoritePlaces;
}
private List<Place> favoritePlaces;
public String getFamilyname() {
return familyname;
}
public void setFamilyname(String familyname) {
this.familyname = familyname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getFamilyMembers() {
return familyMembers;
}
public void setFamilyMembers(String[] familyMembers) {
this.familyMembers = familyMembers;
}
}
package com.khlin.com.khlin.jackson.json.test;
public class Place {
private String province;
private String city;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
转换代码:
ObjectMapper objectMapper = new ObjectMapper();
Place hometown = new Place();
hometown.setProvince("guangdong");
hometown.setCity("jieyang");
Place place1 = new Place();
place1.setProvince("fujian");
place1.setCity("amoy");
Place place2 = new Place();
place2.setProvince("zhejiang");
place2.setCity("hangzhou");
List<Place> places = new ArrayList<Place>();
places.add(place1);
places.add(place2);
Student student = generateStudent("dacui", "lin", hometown, places);
Student student2 = generateStudent("ku", "lee", hometown, places);
List<Student> students = new ArrayList<Student>();
students.add(student);
students.add(student2);
String result = objectMapper.writeValueAsString(students);
System.out.println(result);
JavaType javaType = objectMapper.getTypeFactory()
.constructParametricType(ArrayList.class, Student.class);
List<Student> mapperStudents = objectMapper.readValue(result,
javaType);
Student mapperStudent1 = mapperStudents.get(0);
Student mapperStudent2 = mapperStudents.get(1);
System.out.println("success");
Java对象与Json之间的转换的更多相关文章
- Java对象与Json字符串的转换
Java对象与Json字符串的转换 JSON是一种轻量级的数据交换格式,常用于前后端的数据交流 后端 : 前端 Java对象 > JsonString Java对象 < jsonStrin ...
- Java对象、Json、Xml转换工具Jackson使用
在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...
- js中js数组、对象与json之间的转换
在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...
- jackson快速实现对象与json之间的转换
Maven依赖: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <arti ...
- 通过JAXB完成Java对象与XML之间的转换
Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...
- JAXB 实现java对象与xml之间互相转换
首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...
- jaxb 专题一(JAXB 实现java对象与xml之间互相转换)
首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...
- jQuery 对象和 json 之间的转换
JSON.parse() json 转换成 对象 JSON.stringify() 对象转换成json 想问下广大网友大神 js 里面有数组转换或者转换成数组的函数么?小弟等--
- eval()解析json以及js中js数组、对象与json之间的转换
http://www.cnblogs.com/myjavawork/articles/1979279.html https://www.cnblogs.com/coder-economy/p/6203 ...
随机推荐
- POJ_3273_Monthly_Expense_(二分,最小化最大值)
描述 http://poj.org/problem?id=3273 共n个月,给出每个月的开销.将n个月划分成m个时间段,求m个时间段中开销最大的时间段的最小开销值. Monthly Expense ...
- 常用的Web服务器
常用的Web服务器有IIS.Apache.Tomcat.Jboss.Resin.Weblogic.WebSpher IISIIS服务是Windows产品自带的一种免费的Web服务器,安装配置简单,主要 ...
- ASP.NET MVC3细嚼慢咽---(3)Razor视图语法
MVC3.0中新增加了Razor视图,Razor视图的语法以@符号为核心,貌似在这个时代离不开@了,微博,邮箱都用这个. 1.输出变量和文本 @DateTime.Now @for (int i = 0 ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.5
Show that matrices with distinct eigenvalues are dense in the space of all $n\times n$ matrices. (Us ...
- 不使用CvvImage类来在MFC中显示图像
/* * ===================================================================================== * * Filen ...
- SVN记住用户名和密码后如何修改
今天遇到一个SVN检出代码用户验证问题.由于自己最近参与了好几个项目,一时间忙不过来.所以希望跟着自己的试用期的同事帮我测试一下刚修改完成的新功能是否有问题.但是该同事没有项目中权限,正好今天恰逢星期 ...
- mysql 资料总结 长期更新
http://blog.csdn.net/ww1982_0_0_0/article/details/9169613 引入employess
- Vijos P1060 盒子
Vijos P1060 盒子 链接:https://vijos.org/p/1060 [思路] 组合公式+精度选择. 首先解决将A个数放入N个集合的数目,其中集合可空.因为可以有球不放入集合,所以增加 ...
- SQL中CUBE 用法
转自 http://www.cnblogs.com/dyufei/archive/2009/11/11/2573975.html CUBE 运算符生成的结果集是多维数据集.多维数据集是事实数据(即记录 ...
- AS3 IOC框架Spring Actionscript 的使用总结
Spring Actionscript 是众多围绕依赖注入提供解决方案的Flex控制反转框架之一 AS3 下经典的IOC框架有Spring ActionScript.Parsley.Flicc和Swi ...