处理结合对象在我们开发中是操作最多的,比如在web应用开发中,列表显示服务返回的数据,我们就可以将集合对象(List,Map)数据转化为json格式返回。
实例如下:
定义Contact类
package com.txwh.bean;
public class Contact {
private String email;
private String phone;
public Contact(){}
public Contact(String email,String phone){
this.email=email;
this.phone=phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
package com.txwh.bean;
public class Person {
private Long id;
private String name;
private Contact contact;//持有contact对象
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
对List集合的处理
package com.txwh.gson;
import java.io.ObjectInputStream.GetField;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.txwh.bean.Contact;
import com.txwh.bean.Person;
public class TestList {
public static void main(String[] args) {
Gson gson=new Gson();
Person p=new Person();
p.setId(new Long(4));
p.setName("汪峰");
p.setContact(new Contact("wangfeng@qq.com", "1381111111"));
Person p2=new Person();
p2.setId(new Long(4));
p2.setName("章子怡");
p2.setContact(new Contact("zhangzhiyi@qq.com","1388888888"));
List<Person> persons=Arrays.asList(p,p2);
String text=gson.toJson(persons);
System.out.println(text);
System.out.println("\n\n\n");
Type type=new TypeToken<List<Person>>(){}.getType();//使用TypeToken获得<span style="font-family: Arial, Helvetica, sans-serif;">List<Person> 反射Type对象</span>
List<Person> persons2=gson.fromJson(text, type);
for (Person person : persons2) {
System.out.println(person.getName());
}
}
}
运行结果:
[{"id":4,"name":"汪峰","contact":{"email":"wangfeng@qq.com","phone":"1381111111"}},{"id":4,"name":"章子怡","contact":{"email":"zhangzhiyi@qq.com","phone":"1388888888"}}]
汪峰
章子怡
对Map结合的处理:
package com.txwh.gson;
import java.io.ObjectInputStream.GetField;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.txwh.bean.Contact;
import com.txwh.bean.Person;
public class TestMap {
public static void main(String[] args) {
Gson gson=new Gson();
Person p=new Person();
p.setId(new Long(4));
p.setName("汪峰");
p.setContact(new Contact("wangfeng@qq.com", "1381111111"));
Person p2=new Person();
p2.setId(new Long(4));
p2.setName("章子怡");
p2.setContact(new Contact("zhangzhiyi@qq.com","1388888888"));
Map<String, Person> mapPerson=new HashMap<String, Person>();
mapPerson.put("p1", p);
mapPerson.put("p2", p2);
String text=gson.toJson(mapPerson);
System.out.println(text);
System.out.println("\n\n\n");
//List<Person> persons2=gson.fromJson(text,List.class);
Type type=new TypeToken<Map<String,Person>>(){}.getType();
Map<String,Person> persons2=gson.fromJson(text, type);
Set<String> keys=persons2.keySet();
for (String key : keys) {
Person person=persons2.get(key);
System.out.println("name:"+person.getName()+" contact:"+person.getContact().getPhone());
}
}
}
运行结果:
{"p1":{"id":4,"name":"汪峰","contact":{"email":"wangfeng@qq.com","phone":"1381111111"}},"p2":{"id":4,"name":"章子怡","contact":{"email":"zhangzhiyi@qq.com","phone":"1388888888"}}}
name:汪峰 contact:1381111111
name:章子怡 contact:1388888888