【问题标题】:RestTemplate exchange, values are not mapped for a field with underscoreRestTemplate 交换,没有为带下划线的字段映射值
【发布时间】:2020-11-15 18:34:24
【问题描述】:

要消费一个休息服务,这是服务响应

{
   "message": "200",
   "result": "SUCCESS",
   "Test_Id": "23324"
}

使用服务的代码。

ResponseEntity<InfoDto> result = null;
final String uri ="https://app.ed.im/api";

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
result = restTemplate.exchange(uri, HttpMethod.GET, entity, InfoDto.class);

这是 dto

public class InfoDto implements Serializable {
    private String message;
    private String result;
    private String Test_Id;
}

执行后

我已收到 messageresult 的值,但 Test_Id 值未映射。

【问题讨论】:

  • 尝试在Test_Id前添加@JsonProperty("Test_Id")
  • 工作。为什么它与元素名称不匹配,即使它相同。

标签: java spring spring-boot resttemplate objectmapper


【解决方案1】:

如果参数名称的代码约定有问题,请添加完全匹配的 JsonProperty

@JsonProperty("Test_Id")
private String Test_Id; // prefer rename to testId

可能存在underscore to camel-case 转换

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2021-12-29
    • 2018-04-29
    • 2018-09-18
    相关资源
    最近更新 更多