反序列化响应的一部分为null

时间:2019-06-27 02:31:08

标签: java spring

邮递员的回复是

{
    "relation": [
        {
            "trans_id": 1,
            "data": {
                "PLC_id": 1,
                "temp_id": 1,
                "sla_id": 1
            }
        }
    ]
}

获得回复的方式是

Mono<ClientResponse> response = WebClient.builder()
                .baseUrl(baseUrl)
                .build()
                .post()
                .uri("/sync")
                .contentType(MediaType.APPLICATION_JSON_UTF8)
                .accept(MediaType.APPLICATION_JSON_UTF8)
                .syncBody("{\"id\":1}")
                .exchange();
Info result = response.block().bodyToMono(Info.class).block();

但是结果就像

Info(relation=[Trans(trans_id=1, data=PLC(PLC_id=null, temp_id=1, sla_id=1))])

POJO PLC类是

import lombok.Data;

@Data
public class PLC {
    private Integer PLC_id;
    private Integer temp_id;
    private Integer sla_id;
}

多次检查拼写,它们是相同的。
那么,为什么PLC_id为null?可能是什么问题?

我的问题不同于 Part of JSON response from server is returning null: Android 它丢失了一个键,而我有一个键,但值为空。

1 个答案:

答案 0 :(得分:0)

由我的同事启发。将json响应PLC_id更改为小写即可。
因此,我搜索了与json uppercase相关的内容,发现以下问题与我的情况最相关。
Spring REST consuming JSON uppercase vs lowercase

因此,一种方法是更改​​响应主体。 另一个是

  

您可以使用@JsonProperty批注覆盖变量名称。

@JsonProperty("phone")   
public String PHONE;

还有其他相关问题,主要是关于案例问题。

Is there any way to create JSON object with keys as upper case?
How to convert all keys in JSON response to uppercase? (JAVA)
Jackson - Java bean to JSON string : uppercase variable converted into lowercase in JSON
Jackson - converting java object to json - Need all key keys to upper case
Is there any way to create JSON object with keys as upper case?