日期:2014-05-16 浏览次数:20586 次
最近在做项目,需要用到json和java之间的交互,本人对json不是特别精通,于是开始搜索一些java平台的json类库。
发现了google的gson,带着一些好奇心,我开始使用了gson。
经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,
同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
还有一款fastjson也不错执行性能更优,他们都是不依赖其他类库的,但是个人还是习惯用gson,呵呵。
不废话上代码看看吧
这是一个用户实体,里面包含了基本类型,数组和list和map类型,
都是大家常用的。
public class User {
private int id;
private String name;
private boolean isAdmin;
private String[] tels;
private List<Bank> banks;
private Map doSome;
public User() {
// TODO Auto-generated constructor stub
}
public User(int id, String name, boolean isAdmin, String[] tels,
List<Bank> banks, Map doSome) {
super();
this.id = id;
this.name = name;
this.isAdmin = isAdmin;
this.tels = tels;
this.banks = banks;
this.doSome = doSome;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isAdmin() {
return isAdmin;
}
public void setAdmin(boolean isAdmin) {
this.isAdmin = isAdmin;
}
public String[] getTels() {
return tels;
}
public void setTels(String[] tels) {
this.tels = tels;
}
public List<Bank> getBanks() {
return banks;
}
public void setBanks(List<Bank> banks) {
this.banks = banks;
}
public Map getDoSome() {
return doSome;
}
public void setDoSome(Map doSome) {
this.doSome = doSome;
}
@Override
public String toString() {
return "id:"+id+",name:"+name+",isAdmin:"+
isAdmin+",tels:"+tels[0]+",banks:"+banks.get(0).getBankName()+","
+ banks.get(1).getBankName() + ",10点:" + doSome.get("10点");
}
}这个是user里的banks
俺其实就只有这2张。
public class Bank {
private Integer id;
private String bankName;
public Bank() {
// TODO Auto-generated constructor stub
}
public Bank(Integer id, String bankName) {
super();
this.id = id;
this.bankName = bankName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
}/**
* 测试gson
* @author jelly
*
*/
public class Test {
public static void main(String[] args) {
Gson gson = new Gson();
//java复杂对象转json
Bank b1 = new Bank(1,"中国银行卡");
Bank b2 = new Bank(2,"工行银行卡");
List<Bank> banks = new ArrayList<Bank>();
banks.add(b1);banks.add(b2);
Map map = new HashMap();
map.put("10点", "出去卖萌!");
User user1 = new User(1,"张三",false,new String[]{"130000000","150"},banks,map);
String toString = gson.toJson(user1);
System.out.println(toString);
System.out.println("\n//--------------华丽的分割线--------------//\n");
//json转java对象
String json = "{'id':1,'name':'张三','isAdmin':false,'tels':['130','150'],'banks':[{'id':1,'bankName':'中国银行卡'},{'id':2,'bankName':'工行银行卡'}],'doSome':{'10点':'出去卖萌!'}}";
User u = gson.fromJson(json, User.class);
System.out.println(u);
}
}
输出结果:
{"id":1,"name":"张三","isAdmin":false,"tels":["130000000","150"],"banks":[{"id":1,"bankName":"中国银行卡"},{"id":2,"bankName":"工行银行卡"}],"doSome":{"10点":"出去卖萌!"}}
//--------------华丽的分割线--------------//
id:1,name:张三,isAdmin:false,tels:130,banks:中国