现在的位置: 首页 > 综合 > 正文

JSON知识总结- Gson(五)Date

2013年12月07日 ⁄ 综合 ⁄ 共 1639字 ⁄ 字号 评论关闭

使用Gson做java.util.Date的转换,找到了一种方法:

首先要写Date的转化器

package org.ygy.date;

import java.lang.reflect.Type;
import java.util.Date;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;

public class UtilDateDeserializer implements JsonDeserializer<Date> {

	@Override
	public Date deserialize(JsonElement json, Type typeOfT,
			JsonDeserializationContext context) throws JsonParseException {
		return new Date(json.getAsJsonPrimitive().getAsLong());
	}

}
package org.ygy.date;

import java.lang.reflect.Type;
import java.util.Date;

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

public class UtilDateSerializer implements JsonSerializer<Date> {

	@Override
	public JsonElement serialize(Date src, Type typeOfSrc,
			JsonSerializationContext context) {
		return new JsonPrimitive(src.getTime());
	}

}

测试:

package org.ygy.date;

import java.text.DateFormat;
import java.util.Date;

import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class DateTest {
	
	public static String toJson(Date date) {
		Gson gson = new GsonBuilder()
				.registerTypeAdapter(Date.class, new UtilDateSerializer())
				.setDateFormat(DateFormat.LONG).create();

		return gson.toJson(date);
	}
	
	public static Date fromJson(String json) {
		Gson gson = new GsonBuilder()
						.registerTypeAdapter(Date.class, new UtilDateDeserializer())
						.setDateFormat(DateFormat.LONG)
						.create();
		
		return gson.fromJson(json , Date.class);
	}
	
	@Test
	public void testDate() {
		String json = toJson(new Date());
		System.out.println("json->" + json);
		
		Date date = fromJson(json);
		System.out.println(date.getTime());
	}

}

结果显示:

抱歉!评论已关闭.