Java 日历的序列化
Serialization for Java Calendar
如何通过扩展 json serializer<Calendar>
为 java 日历创建自定义序列化到 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 需要的唯一数据是日期,您可以使用 Gson:
JsonObject albums = new JsonObject();
albums.addProperty("date", new Date());
如果您的 json 不是那么多,您可以考虑定义自己的 class 并通过将此方法添加到定义的 class:[=12= 来序列化它]
public String toJson() {
Gson gson = new Gson();
return gson.toJson(this);
}
从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;
如何通过扩展 json serializer<Calendar>
为 java 日历创建自定义序列化到 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 需要的唯一数据是日期,您可以使用 Gson:
JsonObject albums = new JsonObject();
albums.addProperty("date", new Date());
如果您的 json 不是那么多,您可以考虑定义自己的 class 并通过将此方法添加到定义的 class:[=12= 来序列化它]
public String toJson() {
Gson gson = new Gson();
return gson.toJson(this);
}
从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;