美文网首页
Gson问题

Gson问题

作者: 明日复日明 | 来源:发表于2017-03-20 17:24 被阅读0次

时间类型的问题

当我们为传输协议写Bean的时候,时间属性通常情况下都是时间戳的形式,然而当我们将其定义为Date格式时Gson默认是不支持的,其转换格式为:"mDate":"Mar 20, 2017 4:49:01 PM",因此我们会改为定义成long的格式。其实我们可以手动处理一下:


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


public class DateSerializer implements JsonSerializer<Date> {
    @Override
    public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(src.getTime());
    }
}


public class GsonBuilderUtil {

    public static Gson create() {
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(java.util.Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG);
        gsonBuilder.registerTypeAdapter(java.util.Date.class, new DateDeserializer()).setDateFormat(DateFormat.LONG);
        Gson gson = gsonBuilder.create();
        return gson;
    }
}

此时我们就可以在Bean中定义Date属性,调用Gson gson = GsonBuilderUtil.create();得到正确的格式:"mDate":1490000417888

int,long,boolean的问题

当我们的Bean中存在int、long、boolean类型的数据时,不管你是否有对其赋值,使用Gson对该Bean使用toJson时,都会默认为其初始化并添加进转换后的字符串中,如下所示:


DateBean dateBean = new DateBean();
                dateBean.setString("ass");
                LogUtil.e("YXH", GsonBuilderUtil.create().toJson(dateBean));

得到的结果是:

{"mString":"ass","mDate":1490000862734,"mLong":0,"mInt":0,"mBoolean":false}

我们可以将其定义成Integer、Long、Boolean来规避此问题。

相关文章

  • JSONArray的解析

    问题1:类似String s = "[ { },{ },{ } ]";这种结构的解析 方法一: Gson gson...

  • Gson问题

    时间类型的问题 当我们为传输协议写Bean的时候,时间属性通常情况下都是时间戳的形式,然而当我们将其定义为Date...

  • Gson格式化报错com.google.gson.JsonSyn

    日期 2018-05-07 问题 Gson格式化报错 com.google.gson.JsonSyntaxExce...

  • gson解析对象闪退

    问题描述: 在使用谷歌的gson把对象转成json时老是卡住,闪退。 String json =new Gson(...

  • Gson教程 Apache POI教程 Guava教程Apac

    Gson教程 Gson概述Gson环境设置Gson第一个应用Gson classGson对象序列化Gson数据绑定...

  • list集合转换为json

    //后台Gson gson=new Gson();String json=gson.toJson(集合, new ...

  • GSON 解析 JSON

    GSON JSON 介绍 Gson 下载 Gson 解析 和 格式化Gson 格式化Gson 解析 解析asset...

  • 2018-01-11

    Gson解析复杂json数据常用的两种解析方式 Gson gson = new Gson(); 1.gson.fr...

  • Gson的使用

    序列化对象: Gson gson = new Gson();String json = gson.toJson(o...

  • Tools

    完全理解Gson(3):Gson反序列化 完全理解Gson(2):Gson序列化 完全理解Gson(1):简单入门...

网友评论

      本文标题:Gson问题

      本文链接:https://www.haomeiwen.com/subject/btdinttx.html