Gson转换bo对象并解析date类型

import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonPrimitive;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String,String> map = new HashMap<String,String>();
		map.put("123", "asas");
		map.put("vgvg", "rtretr");
		List<Map<String,String>> list = new ArrayList<Map<String,String>>();
		list.add(map);
		Gson gson = new Gson();
		String r = gson.toJson(list);
		
		Type type =  new TypeToken<List<Map<String,String>>>(){}.getType();
		
		List<Map<String,String>> l = gson.fromJson(r, type);
		System.out.println(l.get(0).get("123"));
		
		
		User u = new User();
		u.name = "zs";
		u.date = new Date();
		System.out.println(gson.toJson(u));
		System.out.println(objectToJsonDateSerializer(u,"yyyy-MM-dd"));
		
		System.out.println(((User)jsonToBeanDateSerializer(objectToJsonDateSerializer(u,"yyyy-MM-dd"),User.class,"yyyy-MM-dd")).name);
	}
	
	 /** 
     * 将对象转换成json格式(并自定义日期格式) 
     *  
     * @param ts 
     * @return 
     */  
    public static String objectToJsonDateSerializer(Object ts,  
            final String dateformat) {  
        String jsonStr = null;  
        Gson gson = new GsonBuilder()  
                .registerTypeHierarchyAdapter(Date.class,  
                        new JsonSerializer<Date>() {  
                            public JsonElement serialize(Date src,  
                                    Type typeOfSrc,  
                                    JsonSerializationContext context) {  
                                SimpleDateFormat format = new SimpleDateFormat(  
                                        dateformat);  
                                return new JsonPrimitive(format.format(src));  
                            }  
                        }).setDateFormat(dateformat).create();  
        if (gson != null) {  
            jsonStr = gson.toJson(ts);  
        }  
        return jsonStr;  
    }  
    
	 @SuppressWarnings("unchecked")  
	    public static <T> T jsonToBeanDateSerializer(String jsonStr, Class<T> cl,  
	            final String pattern) {  
	        Object obj = null;  
	        Gson gson = new GsonBuilder()  
	                .registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {  
	                    public Date deserialize(JsonElement json, Type typeOfT,  
	                            JsonDeserializationContext context)  
	                            throws JsonParseException {  
	                        SimpleDateFormat format = new SimpleDateFormat(pattern);  
	                        String dateStr = json.getAsString();  
	                        try {  
	                            return format.parse(dateStr);  
	                        } catch (ParseException e) {  
	                            e.printStackTrace();  
	                        }  
	                        return null;  
	                    }  
	                }).setDateFormat(pattern).create();  
	        if (gson != null) {  
	            obj = gson.fromJson(jsonStr, cl);  
	        }  
	        return (T) obj;  
	    }  

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值