Gson-如何根据不同字段的值对字段进行序列化/反序列化?

时间:2019-04-11 09:52:33

标签: java gson

我们的班级很多:

class Foo {
    // ... many fields
    @Expose
    @JsonAdapter(DateAdapter.class)
    Date start;

    @Expose
    String startTimeZone;
    // ... more fields
}

现在,在本地将start的值存储为UTC,并将时区信息分别存储在startTimeZone中。但是,将数据发送到服务器时,我们需要将开始转换为startTimeZone ,并将其格式化为字符串“ YYYY-mm-dd HH:mm:ss”。

我们有这个DateAdpater类

public class DateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {

    @Override
    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        return DateUtils.parseServerDateTime(json.getAsString);
    }

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

但是,在DateAdapter中,我们无法访问startTimeZone字段,因此我们无法将其用于格式化/解析。

我知道我们可以为整个类编写一个自定义适配器,但是如上所述,该类很大,所以我宁愿有其他解决方案。

0 个答案:

没有答案