Gson使用

1.值为null的字段不显示

 GsonBuilder gsonbuilder = new GsonBuilder().serializeNulls();

2.时间格式的显示

gsonbuilder.setDateFormat("yyyy-MM-dd");

3.timeStamp格式显示

(1)创建类型适配器

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

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;
public class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp>{  
    private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");      
    public JsonElement serialize(Timestamp ts, Type t, JsonSerializationContext jsc) {      
        String dfString = format.format(new Date(ts.getTime()));      
        return new JsonPrimitive(dfString);      
    }      
    public Timestamp deserialize(JsonElement json, Type t, JsonDeserializationContext jsc) throws JsonParseException {      
        if (!(json instanceof JsonPrimitive)) {      
            throw new JsonParseException("The date should be a string value");      
        }      
     
        try {      
            Date date = format.parse(json.getAsString());      
            return new Timestamp(date.getTime());      
        } catch (ParseException e) {      
            throw new JsonParseException(e);      
        }      
    }      
}   

(2)配置适配器

gsonbuilder.registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter());

4. Null 显示为“”

import java.io.IOException;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
public class StringTypeAdapter extends TypeAdapter<String>{  
public void write(JsonWriter out, String value) throws IOException {  
         if (value == null) {  
             // out.nullValue();  
             out.value(""); // 序列化时将 null 转为 ""  
         } else {  
             out.value(value);  
         }  
     }  


     @Override  
     public String read(JsonReader in) throws IOException {  
         if (in.peek() == JsonToken.NULL) {  
             in.nextNull();  
             return null;  
         }  
         // return in.nextString();  
         String str = in.nextString();  
         if (str.equals("")) { // 反序列化时将 "" 转为 null  
             return null;  
         } else {  
             return str;  
         }  
     }  
  
}   

gsonbuilder.registerTypeAdapter(String.class,new StringTypeAdapter());


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值