`
ahua186186
  • 浏览: 564852 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

gson学习

 
阅读更多
转自
1.介绍:Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。GSON核心jar包不到1M,非常精简,但提供的功能无疑是非常强大的,如果使用JDK自带的JSON解析API,使用起来相对比较繁琐一点,而且代码量较多。

package com.demoone;

import java.util.ArrayList;
import java.util.List;

import com.entity.Person;
import com.google.gson.Gson;
import com.google.gson.reflect.*;

/***
*
* 使用gson
* 进行序列化,反序列化的操作
* json
*
* **/
public class UseGson {

static Gson g=new Gson();
/**
  *
  * 由集合类型的实体类
  * 转换成Json类型
  *
  * **/
public static void testToJSON(){


List<Person> list=new ArrayList<>();

for(int i=0;i<2;i++){
Person p=new Person(i, "散仙"+i, "北京市"+i, "54152541@qq.com", 500.0);
            list.add(p);
}
String json=g.toJson(list);
System.out.println(json);

}


/**
* 由json转换为实体类
*
* */
public static void testOneBeanFromJSON(){


/**
* 转换一个Java Bean的时候
* 记住不能使用[],只有在使用集合的时候才可以使用
* 如上图贴的那个异常就是由此原因造成的,另外
* 格式要规范,中间不能出现空格字符
*
* **/
String jsonBean="[{\"id\":0,\"name\":\"散仙0\",\"address\":\"北京市0\",\"email\":\"54152541@qq.com\",\"money\":500.0}]";
Person p=g.fromJson(jsonBean, Person.class);
System.out.println(p);

}

/**
* 由json转换为实体类集合
*
* */
public static void testListBeanFromJSON(){




/**
  * 转换一个集合 的实体Bean
  * 注意前面加上[]方括号,代表一个数组
  * **/
  

 

String  jsonBeanList="[{\"id\":0,\"name\":\"散仙0\",\"address\":\"北京市0\",\"email\":\"54152541@qq.com\",\"money\":500.0},{\"id\":1,\"name\":\"散仙1\",\"address\":\"北京市1\",\"email\":\"54152541@qq.com\",\"money\":500.0}]";

List<Person> lists=g.fromJson(jsonBeanList,new   TypeToken<List<Person>>(){}.getType());
System.out.println("反序列之后");
for(Person pp:lists){

System.out.println(pp);
}
}


public static void main(String[] args) {

testListBeanFromJSON();//测试集合反序列化
testOneBeanFromJSON();//测试单个实体类反序列化
//testToJSON();//测试序列化

}

}

testListBeanFromJSON()  方法:
反序列之后
编号:0  名字:散仙0   地址:北京市0   E-mail:54152541@qq.com  钱:500.0
编号:1  名字:散仙1   地址:北京市1   E-mail:54152541@qq.com  钱:500.0
testOneBeanFromJSON()  方法:
编号:0  名字:散仙0   地址:北京市0   E-mail:54152541@qq.com  钱:500.0

package com.entity;

/**
* 实体类
*
*
* **/
public class Person {

private int id;
private String name;
private String address;
private String email;
private double money;

@Override
public String toString() {
// TODO Auto-generated method stub
return  "编号:"+id+"  名字:"+name+"   地址:"+address+"   E-mail:"+email+"  钱:"+money;
}
public Person() {
// TODO Auto-generated constructor stub
}
public Person(int id, String name, String address, String email,
double money) {
super();
this.id = id;
this.name = name;
this.address = address;
this.email = email;
this.money = money;
}
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}


}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics