json java对象序列化_GSON实现Java对象的JSON序列化与反序列化的实例教程

从GitHub下载GSON:https://github.com/google/gson

Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类别以及其成员才能成功的将JSON字符串成功转换成相对应的对象。

class Examples {

private int answer1 = 100;

private String answer2 = "Hello world!";

Examples(){

} // default constructor

}

序列化JAVA对象成JSON字符串

Examples example1 = new Examples();

Gson gson = new Gson();

String json = gson.toJson(example1);

json结果将是

{"answer1":100,"answer2":"Hello world!"}

反序列化JSON字符串成对应的JAVA对象

Examples example2= gson.fromJson(json,Examples.class);

==> example2即與example1相同

对象example1通过toJson序列化成JSON字符串传递,再宣告一个对象example2为接收了JSON后通过fromJson反序列化成example2,故example1与example2相同

示例:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collection;

import java.util.HashMap;

import java.util.Map;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

class User{

public User(String name,int age,StringBuffer sex,boolean isChild){

this.name = name;

this.age = age;

this.sex = sex;

this.isChild = isChild;

}

private String name;

private int age;

private StringBuffer sex;

private boolean isChild;

public String toString(){

return "{name="+name+";age="+age+";sex="+sex+";isChild="+isChild+"}";

}

public int hashCode(){

return name.hashCode()*100+age;

}

}

public class GsonTest {

public static void main(String[] args) {

Gson gson = new Gson();

System.out.println("1普通的Bean的转换**************************");

System.out.println("将一个Bean转换成为json字符串->");

User user1 = new User("凤姐",12,new StringBuffer("未知"),true);

System.out.println("转换之前的user1"+user1);

String json = gson.toJson(user1);

System.out.println("User对象转换成为Json字符串,json==="+json);

System.out.println("***************************");

System.out.println("将一个json字符串转换成为Bean->");

User user2 = gson.fromJson(json, User.class);

System.out.println("转换成为的user2=="+user2);

System.out.println();

System.out.println("2Collection集合的转换**************************");

System.out.println("将一个Bean的List集合转换成为json字符串->");

Collection userList1 = new ArrayList();

for(int i=0;i<3;i++){

User user = new User("如花",10+i,new StringBuffer("男"),false);

userList1.add(user);

}

json = gson.toJson(userList1);

System.out.println("User的List集合对象转换成为Json字符串,json==="+json);

System.out.println("***************************");

System.out.println("将一个json字符串转换成为Bean的List集合->");

Collection userList2 =

gson.fromJson(json,

new TypeToken>(){}.getType());

System.out.println("转换成为的User的List集合,userList2="+userList2);

System.out.println();

System.out.println("3Array数组的转换**************************");

System.out.println("将一个Bean的Array数组转换成为json字符串->");

User [] userArray1 = new User[3];

for(int i=0;i

userArray1[i] = new User("芙蓉",20,new StringBuffer("人妖"),true);

}

json = gson.toJson(userArray1);

System.out.println("User的数组对象转换成为Json字符串,json==="+json);

System.out.println("***************************");

System.out.println("将一个json字符串转换成为Bean的数组对象->");

User [] userArray2 = gson.fromJson(json, new TypeToken(){}.getType());

System.out.println("转换成为的User的数组对象,userArray2="+Arrays.toString(userArray2));

System.out.println();

System.out.println("4Map的转换**************************");

System.out.println("将一个Bean的Map转换成为json字符串->");

Map map1 = new HashMap();

for(int i=0;i<3;i++){

map1.put(""+(i+10), userArray1[i]);

}

json = gson.toJson(map1);

System.out.println("User的Map集合转换成为Json字符串,json==="+json);

System.out.println("***************************");

System.out.println("将一个json字符串转换成为Bean的数组对象->");

Map map2 =

gson.fromJson(json,

new TypeToken>(){}.getType());

System.out.println("转换成为的User的数组对象,map2=="+map2);

}

}

运行结果:

1普通的Bean的转换**************************

将一个Bean转换成为json字符串->

转换之前的user1{name=凤姐;age=12;sex=未知;isChild=true}

User对象转换成为Json字符串,json==={"name":"凤姐","age":12,"sex":"未知","isChild":true}

***************************

将一个json字符串转换成为Bean->

转换成为的user2=={name=凤姐;age=12;sex=未知;isChild=true}

2Collection集合的转换**************************

将一个Bean的List集合转换成为json字符串->

User的List集合对象转换成为Json字符串,json===[{"name":"如花","age":10,"sex":"男","isChild":false},{"name":"如花","age":11,"sex":"男","isChild":false},{"name":"如花","age":12,"sex":"男","isChild":false}]

***************************

将一个json字符串转换成为Bean的List集合->

转换成为的User的List集合,userList2=[{name=如花;age=10;sex=男;isChild=false}, {name=如花;age=11;sex=男;isChild=false}, {name=如花;age=12;sex=男;isChild=false}]

3Array数组的转换**************************

将一个Bean的Array数组转换成为json字符串->

User的数组对象转换成为Json字符串,json===[{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}]

***************************

将一个json字符串转换成为Bean的数组对象->

转换成为的User的数组对象,userArray2=[{name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}]

4Map的转换**************************

将一个Bean的Map转换成为json字符串->

User的Map集合转换成为Json字符串,json==={"10":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"11":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"12":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}}

***************************

将一个json字符串转换成为Bean的数组对象->

转换成为的User的数组对象,map2=={10={name=芙蓉;age=20;sex=人妖;isChild=true}, 11={name=芙蓉;age=20;sex=人妖;isChild=true}, 12={name=芙蓉;age=20;sex=人妖;isChild=true}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值