Java对象与Json之间的转换

时间:2023-01-04 13:17:54

使用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&lpar;&rpar;解析json以及js中js数组、对象与json之间的转换

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

随机推荐

  1. rt3070 驱动异常问题

    新买的 Wi-Fi 网卡插在板子上,不能用.dmesg 查看,看到下面的内容. [ 9.501098] phy0 -> rt2x00lib_request_firmware: Error - F ...

  2. 最简单的STM32入门教程----闪烁LED

    本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看. 第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED... 第一步,建立一个文件夹0. ...

  3. APP弱网测试

    APP弱网测试   App弱网测试方法,常用工具有使用fiddler进行网络模拟,也可以使用Network Emulator Toolkit控制模拟网络,相对来说Network Emulator To ...

  4. Maven-改变本地存储仓库位置

    修改 maven 仓库存放位置: 找到 maven 下的 conf 下的 settings.xml 配置文件,假设maven安装在D:\Server目录中.那么配置文件应该在 D:\Server\ma ...

  5. Spring常用的接口和类(一)

    一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: p ...

  6. UIProgressView swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  7. Bootstrap简易使用指南

    1.框架 1.1全局样式 使用HTML5的doctype,scaffolding.less中定义全局样式,从2开始使用normalize.css,并使用reset.less进行简化 1.2默认栅格系统 ...

  8. 关于 Android 进程保活,你所需要知道的一切

    早前,我在知乎上回答了这样一个问题:怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死?.关于 Android 平台的进程保活这一块,想必是所有 Android 开发者瞩目的内容之一.你 ...

  9. EJB QI查询

    EO.PNAME like ?1 OR  EO.PNAME like ?2";      Query query = entityManager.createNativeQuery(quer ...

  10. POJ 2975 Nim(普通nim)

    题目链接 #include<iostream> #include<cstdio> using namespace std; int main() { ]; int sum,cn ...