Json转换利器Gson之实例

简介:

描述

     Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来

示例

import java.lang.reflect.Type;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;


public class GSonDemo {
	public static void main(String[] args) {
//		Gson gson = new Gson();
		//设置将类型的属性进行格式转换
		Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.classnew TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		List<Person> persons = new ArrayList<Person>();
		for (int i = 0; i < 10; i++) {
		     Person p = new Person();
		     p.setName("name" + i);
		     p.setAge(i * 5);
		     p.setInsertTime(new Timestamp(System.currentTimeMillis()));
		     persons.add(p);
		}
		String str = gson.toJson(persons);
		System.out.println(str);
		
		List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
		for(int i = 0; i < ps.size() ; i++)
		{
		     Person p = ps.get(i);
		     System.out.println(p.toString());
		}
		
		System.out.println(new Timestamp(System.currentTimeMillis()));
	}
}

class Person {
	private String name;
	private int age;
	private Timestamp insertTime;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Timestamp getInsertTime() {
		return insertTime;
	}

	public void setInsertTime(Timestamp insertTime) {
		this.insertTime = insertTime;
	}

	@Override
	public String toString() {
		return name + "\t" + age + "\t" + insertTime;
	}
}

//实现序列化,反序列化接口
class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp{
    public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
        String dateFormatAsString = format.format(new Date(src.getTime()));
        return new JsonPrimitive(dateFormatAsString);
    }

    public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        if (!(json instanceof JsonPrimitive)) {
            throw new JsonParseException("The date should be a string value");
        }

        try {
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
            Date date = (Date) format.parse(json.getAsString());
            return new Timestamp(date.getTime());
        } catch (Exception e) {
            throw new JsonParseException(e);
        }
    }

}

参考

http://my.oschina.net/sunglasscat/blog/336590

http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html

http://my.oschina.net/itblog/blog/204120

目录
相关文章
|
9月前
|
数据采集 JSON API
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
|
1月前
|
JSON Java 数据格式
将JSON格式的字符串转换成List集合引入gson 的jar包
将JSON格式的字符串转换成List集合引入gson 的jar包
17 0
|
2月前
|
JSON 安全 JavaScript
Java一分钟之-JSON处理:Gson与Jackson库
本文对比介绍了Java中常用的两个JSON库Gson和Jackson。Gson以其简洁易用和自动序列化/反序列化功能受到青睐,而Jackson则以优异性能和丰富功能(如字段忽略、日期格式化)著称。文中通过代码示例展示了两者的基本用法,并讨论了常见问题及解决策略,包括时间格式处理、循环引用和类型匹配。在实际应用中,应根据性能需求、安全性和版本兼容性选择合适的库,并遵循最佳实践。
41 0
|
2月前
|
JSON 数据格式
使用 Gson 将 Map、List等转换为json string
使用 Gson 将 Map、List等转换为json string
32 0
|
2月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
36 0
|
2月前
|
JSON 数据格式
gson自定义Type解析json数组字符串
gson自定义Type解析json数组字符串
|
2月前
|
XML JSON Android开发
[Android]使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换
[Android]使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换
63 0
|
10月前
|
存储 JSON 自然语言处理
【ODPS新品发布第2期】实时数仓Hologres:推出计算组实例/支持JSON数据/向量计算+大模型等新能力
本期将重点介绍Hologres推出计算组实例,Hologres支持JSON数据 ,Hologres向量计算+大模型能力,Hologres数据同步新能力,Hologres数据分层存储
|
9月前
|
JSON 数据格式
Gson转换json数据为HashMap时long类型变为double问题解决
今天再使用Gson处理json数据的时候碰到了一个问题 , 当我使用如下代码解析json数据的时候 , requestTime就变为了double类型
154 0
|
11月前
|
JSON Java Maven
GSON的用法(处理对象和JSON的相互转化)
GSON的用法(处理对象和JSON的相互转化)
159 0