【问题标题】:JSON request formatting issueJSON请求格式问题
【发布时间】:2020-07-18 06:55:17
【问题描述】:

我使用 beans.xml 编写了一个请求 DTO,我在 beans.xml 中使用了 @JsonPropertyOrder 和 @JsonProperty 注释:

<bean ...>
 <annotations>@JsonPropertyOrder({
            "FirstName",
            "LastName"
        })
        <property name="FirstName" type="java.lang.String" >
            <annotations>@JsonProperty("FirstName")</annotations>
        </property>
        <property name="LastName" type="java.lang.String" >
            <annotations>@JsonProperty("LastName")</annotations>
        </property>
</bean>

我还使用 ObjectMapper 将 DTO 对象转换为 Json 字符串。 但是当实际将 json 发送给第三方时,我观察到:

  1. 虽然我使用了 @JsonPropertyOrder ,但元素的顺序与它所写的不同。
  2. 在请求字符串中,FirstName 和 LastName 以 firstNamelastName(小的首字母)的形式出现

我该如何解决这个问题?

【问题讨论】:

  • 显然您的 bean.xml 中的 JSON 注释没有应用。尝试直接在java类中使用注解。
  • Yah Nikolai,作为项目开发过程的一部分,我正在尝试使用 beans.xml

标签: java json spring spring-mvc hybris


【解决方案1】:

我猜您使用@JsonProperty 的原因是您的json 中的参数名称(FirstName,LastName)与您的Java 类(firstName,lastName)不同。你应该把你的java参数的名字放在属性标签中,所以:

        <property name="firstName" type="java.lang.String" >
            <annotations>@JsonProperty("FirstName")</annotations>
        </property>
        <property name="lastName" type="java.lang.String" >
            <annotations>@JsonProperty("LastName")</annotations>
        </property>

【讨论】:

    【解决方案2】:

    在我看来,您在第一个注释元素上缺少 &lt;/annotations&gt;

    【讨论】:

    • 哦对不起..实际上它们存在于 beans.xml 中,但我忘了在这里提及。
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多