Skip to main content
 首页 » 编程设计

Java Springboot,RestTemplate结果数编码

2023年09月11日45linjiqin

我有一个 api,它从 OracleDB 读取。如果我直接调用它,它会返回:

{ 
 ... 
 ... 
 numericField: 910010000346422907 
 ... 
 otherNumericField: 2018020800 
 ... 
} 

但是如果我使用 springboot java 服务器调用它

URI targetUrl= UriComponentsBuilder.fromUriString(url) 
            .queryParams(queryParameters) 
            .build() 
            .encode() 
            .toUri(); 
 
RestTemplate restTemplate = new RestTemplate(); 
String result = restTemplate.getForObject(targetUrl, String.class); 

结果字符串中的值看起来像

numericFiled: 9.1001000034642291E17 .... otherNumericField: 2.0180208E9 

api返回Content-Type application/json;字符集=UTF-8。我怎样才能正确读取数值?

请您参考如下方法:

你必须创建一个具有所有属性的 POJO 类,像这样,你可以使用 lombok 来创建 GettersSetters通过注释为您lombok

public class ResponseData { 
 
      private double numericFiled 
 
      private double otherNumericField 
 
   // Getters and Setters 
 
  } 

并且在 getForObject调用只需传递 Class类型

ResponseData result = restTemplate.getForObject(targetUrl, ResponseData.class); 

如果您不知道 JSON 架构,请使用 Map<Object,Object> map , 但总是推荐解析为模型,你也可以忽略你不需要和不知道的字段