使用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之间的转换的更多相关文章

  1. Java对象与Json字符串的转换

    Java对象与Json字符串的转换 JSON是一种轻量级的数据交换格式,常用于前后端的数据交流 后端 : 前端 Java对象 > JsonString Java对象 < jsonStrin ...

  2. Java对象、Json、Xml转换工具Jackson使用

    在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...

  3. js中js数组、对象与json之间的转换

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...

  4. jackson快速实现对象与json之间的转换

    Maven依赖: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <arti ...

  5. 通过JAXB完成Java对象与XML之间的转换

    Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...

  6. JAXB 实现java对象与xml之间互相转换

    首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...

  7. jaxb 专题一(JAXB 实现java对象与xml之间互相转换)

    首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...

  8. jQuery 对象和 json 之间的转换

    JSON.parse() json 转换成 对象 JSON.stringify() 对象转换成json 想问下广大网友大神 js 里面有数组转换或者转换成数组的函数么?小弟等--

  9. eval()解析json以及js中js数组、对象与json之间的转换

    http://www.cnblogs.com/myjavawork/articles/1979279.html https://www.cnblogs.com/coder-economy/p/6203 ...

随机推荐

  1. windows查看服务端口

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

  2. ArcGIS for Android示例解析之空间查询-----QueryTask

    转自:http://blog.csdn.net/wozaifeiyang0/article/details/7331450 QueryTask 查询功能在GIS中是一个不可或缺的重要功能,示例中提供了 ...

  3. tcxtreelist Properties的使用(TcxImageComboBoxProperties)

    TcxImageComboBoxProperties(MID_Comp.Properties).Items.Clear; 这样就可以使用属性了. if lstPaper.FocusedNode.Val ...

  4. web测试中,各类web控件测试点总结

    一 .界面检查 进入一个页面测试,首先是检查title,页面排版,字段等,而不是马上进入文本框校验 1.页面名称title是否正确 2.当前位置是否可见  您的位置:xxx>xxxx 3.文字格 ...

  5. QT无法定位入口点QtCore4.dll(万恶的matlab啊)

    今天安装QT, 参考: http://www.qtcn.org/bbs/simple/?t53333.html 遇到问题 发现怎么更matlab有关了.果断把系统环境变量改一下:放到了最前面 呵呵,行 ...

  6. bzoj 2707 [SDOI2012]走迷宫(SCC+高斯消元)

    Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿 ...

  7. extjs Cannot read property 'dom' of null

    如果你的EXTJS报错: Cannot read property 'dom' of null,那就有可能是因为你的HTML或者JSP文件中的BODY标签里面少了个东西比如代码是: <html& ...

  8. 5 crucial optimizations for SSD usage in Ubuntu Linux

    I bought my first SSD more than 5 years ago (late 2007), for my white MacBook Core2Duo 2.0 Ghz. It m ...

  9. storm的特性

    storm的特性 Storm 是一个开源的分布式实时计算系统,可以简单.可靠地处理大量的数据流. Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个 ...

  10. Android核心基础(四)

    1.联系人表结构 添加一条联系人信息 package com.itheima.insertcontact; import android.app.Activity; import android.co ...