无论如何我可以将参数传递给GSON JsonSerializer吗?

时间:2017-11-03 04:04:23

标签: java gson

我有一个json文件,其中有一个Date字段。我正在使用JsonDeserializer将其转换为所需的日期格式(dd / MM / yyyy),并在TypeAdapter中将该类注册为GsonBuilder。现在,我想将此字段转换为不同的日期格式(例如ISO8601)以用于不同的用例。而不是为不同的日期格式创建新的JsonDeserializer,无论如何,我可以将日期格式作为参数之一传递给JsonSerializer类,以使其可扩展。

反序列化程序类:

public class DateDeserializer implements JsonDeserializer<Date> {
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");

    @Override
    public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
        String dateString = jsonElement.getAsString();
        if (!StringUtils.isEmpty(dateString)) {
            try {
                return DATE_FORMAT.parse(dateString);
            } catch (ParseException e) {
            }
        }
    }

GsonBuilder:

public static final Gson GSON = new GsonBuilder()
            .registerTypeAdapter(Date.class, new DateDeserializer())
            .serializeNulls()
            .create();

1 个答案:

答案 0 :(得分:0)

  1. 尝试在DateDeserializer类中创建一个String字段dateformat,并使用构造函数将其设置为所需的格式。

    public class DateDeserializer实现JsonDeserializer&lt;日期&gt; {

    String dateFormat = "";
    
    DateDeserializer(String format) {
        this.dateFormat = dateFormat;
    
    }
    
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(dateFormat);
    
    ........
    

    }