Как сериализовать дату в определенном формате?JAVA

Программисты JAVA общаются здесь
Anonymous
Как сериализовать дату в определенном формате?

Сообщение Anonymous »

Обязательный формат вывода любой даты в строке JSON:

Код: Выделить всё

{
"element": [
"~#date",
[
"2013-05-31"
]
],
...
}
Я должен придерживаться этого конкретного формата.
Построение объекта с помощью массива объектов не сработает. Я получаю что-то вроде этого:

Код: Выделить всё

{
"element": [
{
"~#date": "2024-09-17"
}
],
...
}
Я мог бы написать сериализатор для LocalDate, печатающий «[...]». Это похоже на обман. Обратите внимание, что количество дат всегда равно 1.
Есть ли стандартный способ сделать это?
Вот что я делал до сих пор:Объект содержит:

Код: Выделить всё

@JsonProperty("aDate")
private MyMDate[] myDate = null;
Если «MyDate»:

Код: Выделить всё

@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MyDate {
@JsonProperty("~#date")
@JsonSerialize(using = LocalDateArraySerializer.class)
private LocalDate[] date;
}
И сериализатор:

Код: Выделить всё

public class LocalDateArraySerializer extends JsonSerializer {
private final DateTimeFormatter format = DateTimeFormatter.ofPattern( "yyyy-MM-dd");

@Override
public void serialize(LocalDate[] values, JsonGenerator gen, SerializerProvider serializers) throws IOException {
String seperator = "";
for ( LocalDate ld: values) {
gen.writeString( seperator + ld.format(format));
seperator = ",";
}
}
}
Это дает фактический результат: массив с объектом. Это не запрошенный результат.


Подробнее здесь: https://stackoverflow.com/questions/789 ... fic-format

Вернуться в «JAVA»