我有一个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();
答案 0 :(得分:0)
尝试在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);
........
}