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) {
            }
        }
    }
  • 尝试在DateDeserializer类中创建字符串字段dateformat,并使用构造函数将其设置为所需的格式

    公共类DateDeserializer实现JsonDeserializer {

    }


  • 您可以像这样在构造函数中传递它:
    .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);
    
    ........