Java 我是否可以将参数传递给GSON JsonSerializer?
我有一个Java 我是否可以将参数传递给GSON JsonSerializer?,java,gson,Java,Gson,我有一个json文件,它有一个Date字段。我正在使用JsonDeserializer将其转换为所需的日期格式(dd/MM/yyyy),并在GsonBuilder中将该类注册为TypeAdapter。现在,我想为不同的用例将此字段转换为不同的日期格式(比如ISO8601)。除了为不同的日期格式创建新的JsonSerializer,我是否可以将日期格式作为参数之一传递给JsonSerializer类以使其可扩展 反序列化程序类: public class DateDeserializer impl
json
文件,它有一个Date
字段。我正在使用JsonDeserializer
将其转换为所需的日期格式(dd/MM/yyyy),并在GsonBuilder
中将该类注册为TypeAdapter
。现在,我想为不同的用例将此字段转换为不同的日期格式(比如ISO8601)。除了为不同的日期格式创建新的JsonSerializer
,我是否可以将日期格式作为参数之一传递给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) {
}
}
}
您可以像这样在构造函数中传递它:
.registerTypeAdapter(Date.class,新的DateDeserializer(“此处为ISO8601格式”)
如果这是您正在查找的内容。是否要根据不同的JSON对日期字段进行不同的格式设置?@varren ha ha(facepalm情况),当您长时间盯着代码时,你错过了思考一些非常基本的东西,谢谢你。
public static final Gson GSON = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateDeserializer())
.serializeNulls()
.create();
String dateFormat = "";
DateDeserializer(String format) {
this.dateFormat = dateFormat;
}
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(dateFormat);
........