Сделайте поля данных XML нечувствительными к регистру при отображении в Java Object в REST API, разработанном с использованием SpringBoot - PullRequest
0 голосов
/ 06 сентября 2018

По причине истории, мы должны адаптировать старые системы. Это запрос xml:

<?xml version="1.0" encoding="UTF-8"?>
<User>
    <Age>18</Age>
    <Gender>Male</Gender>
    <PassWord>string</PassWord>
    <UserName>
        <FirstName>Maxwell</FirstName>
        <LastName>xxx</LastName>
        <MiddleName>string</MiddleName>
    </UserName>
</User>

Теперь нам нужно внедрить службу поддержки потребителей с помощью Springboot. Но он не поддерживает регистр без учета регистра при отображении в bean-компонент.

@Data
public class User{

    private Username UserName;

    private String PassWord;

    private int Age;

    private String Gender;

    @Data
    class UserName{

        private String LastName;

        private String MiddleName;

        private String FirstName;
    }
}

Результат: enter image description here

Я знаю, что мог бы использовать @XmlElement, но у него будут некоторые проблемы при интеграции с swagger @ annotation.

Я бы хотел отобразить полезную нагрузку XML на объект Java напрямую, используя аннотацию @RequestBody Spring. Мой вопрос здесь: Как мне сделать Java-объект для сопоставления с полями, игнорируя регистр.

1 Ответ

0 голосов
/ 11 сентября 2018

Я нашел способ справиться с этой проблемой. Мы могли бы импортировать jackson-dataformat-xml в pom.xml

<dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-xml</artifactId>
      <version>2.9.6</version>
</dependency>

Если не использовать jackson-dataformat-xml, SpringBoot автоматически использует JAXB из JDK для преобразования XML. Это будет чувствительно к регистру.

...