@turdubekov
Студент

Как правильно конвертировать POJO в XML?

задача: я должен получить json и вернуть ответ в виде xml.
чтобы вернуть xml прописал в контроллере MEDAITYPE:
@PostMapping(path = "/save", produces = {"application/xml", "text/xml"}, consumes = MediaType.ALL_VALUE)
    public Object pay(@RequestBody Request request) {
        logger.info("Вызван метод: Pay");
        return service.add(request);
    }


pojo:
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Request {

    @Id
    private Long id;

    private Long supplierId;

    private String account;

    private Long amount;

    @Enumerated(EnumType.STRING)
    private Command command;

    @Timestamp
    private LocalDateTime date;

}


Я принимаю json:
PAY REQUEST:
{
  "request": {
    "id": 123123123,
    "supplier_id": 321321,
    "account": "999777111222",
    "amount": 100.12,
    "command": "pay",
  "date": "2021-04-10 01:01:01"
  }
}


что у меня получается обратно отправить:
<SaveResponseDto>
    <response_id>777</response_id>
    <status>1</status>
    <message>PAYMENT CONFIRMED</message>
    <date>2021-08-18T00:48:02.4089693</date>
</SaveResponseDto>


вопрос: как можно правильно реализовать, что бы в ответ вернуть XML в таком виде в точь-точь:
<?xml version="1.0" encoding="UTF-8" ?>
<response id="123123123" dts="2021-04-10 01:01:01">
  <p_id>111222</p_id>
  <status>1</status>
  <message>PAYMENT CONFIRMED</message>
</response>
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
У вас есть dto - Request, но нет dto Response.

Вот, примерная структура pojo для Response (источник)
public class Response { 
	public int p_id;
	public int status;
	public String message;
	public int id;
	public Date dts;
	public String text;
}


Также вам для того, чтобы ответ возвращать в xml нужно добавить одну библиотеку для jackson (если вы используете именно его).
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.11.1</version>
</dependency>

Подробности тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы