处理复杂对象一个对象和另一个对象存在关系,比如组合关系,比如人和联系方式,一个人可以有多个联系方式,为了描述他们的关系。我们可以定义一个人类(Person),在定义一个联系方式类(Contact),在Person中持有Contact的属性,代码如下
定义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;
}
}
定义Person类
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;
}
}
测试程序类
package com.txwh.gson;
import com.google.gson.Gson;
import com.txwh.bean.Contact;
import com.txwh.bean.Person;
public class TestCompentObject {
public static void main(String[] args) {
preparedCompentObject();
}
public static void preparedCompentObject(){
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"));
Person ps[]=new Person[]{p,p2};
//将复杂的数组转换为json字符串
String text=gson.toJson(ps);
System.out.println(text);
System.out.println("\n\n\n");
//将复杂的字符串转换为数组对象
Person persons[]=gson.fromJson(text, Person[].class);
for (Person person : persons) {
System.out.println("id:"+person.getId()+" name:"+person.getName()+" conatact:"+person.getContact().getEmail());
}
}
}
运行结果:
[{"id":4,"name":"汪峰","contact":{"email":"wangfeng@qq.com","phone":"1381111111"}},{"id":4,"name":"章子怡","contact":{"email":"zhangzhiyi@qq.com","phone":"1388888888"}}]
id:4 name:汪峰 conatact:wangfeng@qq.com
id:4 name:章子怡 conatact:zhangzhiyi@qq.com