【问题标题】:part of the deserialized response is null部分反序列化响应为空
【发布时间】:2019-06-27 02:31:08
【问题描述】:

邮递员的回复是

{
    "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 为空?可能是什么问题?

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

【问题讨论】:

  • 也添加你的关系类。
  • 可以添加生成的lombok代码吗?我怀疑用大写字母命名该字段会导致生成一些奇怪的东西。
  • 否则,请尝试手动添加 getter/setter
  • @orirab 我认为根本原因与那部分无关,请参阅我的回答。
  • 可能是,公元前您有一个私有字段,因此获取它的唯一方法是通过 getter/setter,因此它们的命名与您的答案基本相同,所以我很高兴您解决了它:)

标签: java spring


【解决方案1】:

被我的同事启发。将 json 响应 PLC_id 更改为小写即可。
于是我搜索了与json uppercase相关的东西,发现下面这个问题和我的情况最相关。
Spring REST consuming JSON uppercase vs lowercase

所以一种方法是更改​​响应正文。 另一个是

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

@JsonProperty("phone")   
public String PHONE;

还有其他相关的问题,主要是case问题。

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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2020-10-19
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多