gpt4 book ai didi

java - Java 日历的序列化

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:27 26 4
gpt4 key购买 nike

如何通过扩展 json serializer<Calendar> 为 java Calendar 创建自定义序列化到 json ?

我对 java.until.Date 做了同样的尝试它正在工作。在序列化方法中,我将Date转成String,写成json格式。

为 java.util.Date 完成的示例代码类似于下面给出的代码

  public class CDJsonDateSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator,SerializerProvider provider)
throws IOException {

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dateString = dateFormat.format(date);
jsonGenerator.writeString(dateString);
}
}

它是这样使用的:

 @JsonSerialize(using = CDJsonDateSerializer.class)
private Date startDate;

如何在不丢失 Calendar 对象数据的情况下将 java 中的 Calendar 序列化为 json?

最佳答案

从 JSON 到 Calendar

创建一个 JsonSerializer :

public class CalendarSerializer extends JsonSerializer<Calendar> {

private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

@Override
public void serialize(Calendar calendar, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException {

String dateAsString = formatter.format(calendar.getTime());
jsonGenerator.writeString(dateAsString);

}
}

然后使用它:

@JsonSerialize(using = CalendarSerializer.class)
private Calendar calendar;

来自Calendar到 JSON

创建一个 JsonDeserializer :

public class CalendarDeserializer extends JsonDeserializer<Calendar> {

private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

@Override
public Calendar deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext)
throws IOException {

String dateAsString = jsonParser.getText();

try {
Date date = formatter.parse(dateAsString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
} catch (Exception e) {
throw new IOException(e);
}
}

然后使用它:

@JsonDeserialize(using = CalendarDeserializer.class)
private Calendar calendar;

关于java - Java 日历的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com