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);

例子如下,定义两个模型

 1 package com.khlin.com.khlin.jackson.json.test;
 2
 3 import java.util.List;
 4
 5 public class Student {
 6
 7     private String familyname;
 8
 9     private String lastname;
10
11     private int age;
12
13     private String[] familyMembers;
14
15     private Place hometown;
16
17     public Place getHometown() {
18         return hometown;
19     }
20
21     public void setHometown(Place hometown) {
22         this.hometown = hometown;
23     }
24
25     public List<Place> getFavoritePlaces() {
26         return favoritePlaces;
27     }
28
29     public void setFavoritePlaces(List<Place> favoritePlaces) {
30         this.favoritePlaces = favoritePlaces;
31     }
32
33     private List<Place> favoritePlaces;
34
35     public String getFamilyname() {
36         return familyname;
37     }
38
39     public void setFamilyname(String familyname) {
40         this.familyname = familyname;
41     }
42
43     public String getLastname() {
44         return lastname;
45     }
46
47     public void setLastname(String lastname) {
48         this.lastname = lastname;
49     }
50
51     public int getAge() {
52         return age;
53     }
54
55     public void setAge(int age) {
56         this.age = age;
57     }
58
59     public String[] getFamilyMembers() {
60         return familyMembers;
61     }
62
63     public void setFamilyMembers(String[] familyMembers) {
64         this.familyMembers = familyMembers;
65     }
66 }
 1 package com.khlin.com.khlin.jackson.json.test;
 2
 3 public class Place {
 4
 5     private String province;
 6
 7     private String city;
 8
 9     public String getProvince() {
10         return province;
11     }
12
13     public void setProvince(String province) {
14         this.province = province;
15     }
16
17     public String getCity() {
18         return city;
19     }
20
21     public void setCity(String city) {
22         this.city = city;
23     }
24 }

转换代码:

 1 ObjectMapper objectMapper = new ObjectMapper();
 2
 3         Place hometown = new Place();
 4         hometown.setProvince("guangdong");
 5         hometown.setCity("jieyang");
 6
 7         Place place1 = new Place();
 8         place1.setProvince("fujian");
 9         place1.setCity("amoy");
10
11         Place place2 = new Place();
12         place2.setProvince("zhejiang");
13         place2.setCity("hangzhou");
14
15         List<Place> places = new ArrayList<Place>();
16         places.add(place1);
17         places.add(place2);
18         Student student = generateStudent("dacui", "lin", hometown, places);
19
20         Student student2 = generateStudent("ku", "lee", hometown, places);
21
22         List<Student> students = new ArrayList<Student>();
23         students.add(student);
24         students.add(student2);
25
26         String result = objectMapper.writeValueAsString(students);
27         System.out.println(result);
28
29         JavaType javaType = objectMapper.getTypeFactory()
30                 .constructParametricType(ArrayList.class, Student.class);
31
32         List<Student> mapperStudents = objectMapper.readValue(result,
33                 javaType);
34         Student mapperStudent1 = mapperStudents.get(0);
35         Student mapperStudent2 = mapperStudents.get(1);
36         System.out.println("success");
时间: 2024-10-08 12:15:14

Java对象与Json之间的转换的相关文章

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

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

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

Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootElement用于标注XML的根元素.这个类的所有属性默认映射为根元素的子元素. 运行代码后,将生成一个D:\test.xml文件,其数据为 二.XML转化为Java对象 代码运行如下 三.更为复杂的映射 将XML中数据读到ArticleData中,类中有一个List,保存每条article数据

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

首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: [email protected],用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. [email protected],定义映射这个类中的何种类型都需要映射到xml.(如果不存在@XmlAccessorType,默认使用XmlAccessType.PUBLIC_MEMBER注解) 参数:XmlAccessType.FIELD: java对象中的所有成员变量. XmlAccessType.PROPERTY

java对象与Json字符串之间的转化(fastjson)

1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> 2. 创建一个Person类(方面下面使用) public class Person implements Comp

JSON-lib框架,JAVA对象与JSON、XML之间的相互转换

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作  1. 首先要去官方下载json-lib工具包 下载地址: http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/ 目前最新的是2.4的版本,本示例中使用的是v2.3:json-lib还需要以下依赖包: jakar

Java对象 json之间的转换(json-lib)

在这里主要简单的介绍一下,如何使用json-lib这个工具包来完成Java对象(或集合)与json对象(或集合)之间的转换~ 1. Java对象转换成json(既创建json) 关键类:JSONObject jsonObject = JSONObject.from(Object obj); 使用说明:只要将Java对象传入方法,那么便可以得到一个JSONObject,然后你便可以直接json.toString();输出json~ 例子: @Test public void testCreateJ

java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFullLesss(),RunfastFullLess.class); 使用阿里巴巴的json插件 <!--json数据转换的阿里巴巴依赖库--><dependency> <groupId>com.alibaba</groupId> <artifactId>

java对象和json对象之间互相转换

一个很好的关于java对象和json对象互转的例子: 1 package com.kenneth.test; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import net.sf.json.JSONArray; 9 import net.sf.json.JSONObject; 10 11 /** 1

java对象与json对象之间的转换

jar包:import net.sf.json.JSONObject; 1.解析json字符串 将json字符串转换为json对象,然后再解析json对象:.JSONObjectjsonObject = JSONObject.fromObject(jsonStr); 根据json中的键得到它的值Stringname = jsonObject.getString("name");int age = jsonObject.getInt("age"); 2.将json字符