关于 java:Map to Map from restTemplate | 珊瑚贝

Map to Map<String, Integer> from restTemplate

本问题已经有最佳答案,请猛点这里访问。


我调用restTemplate 并接收rawMap。从调试中我看到键类和值类是字符串。没关系,因为响应我的 restTemplate 的服务以 JSON 格式发送地图。现在我想用这个代码创建地图:

1
2
Map<String, Integer> gameIdsMap = new HashMap<>();
rawGameIdsMap.forEach(((key, value) -> gameIdsMap.put(String.valueOf(key), Integer.parseInt(String.valueOf(value)))));

我很好奇。有没有更有效和更清晰的方法来做到这一点?
我不能只从 restTemplate Map <String,Integer>.

接收

rest模板

1
Map rawGameIdsMap = Objects.requireNonNull(restTemplate.getForObject(uriFactory.getReverseGameIdsURI(), Map.class));
  • 我不确定,但类似的东西可能会起作用 Map<String, Integer> casted = raw.parallelStream().map(Map::put);
  • stackoverflow.com/questions/8108887/…


RestTemplate 类提供了几个exchange() 方法。
它允许将 ParameterizedTypeReference 的实例指定为参数,其目的是捕获和传递泛型类型。
所以你可以做类似的事情:

1
2
3
Map<String, String> gameIdsMap = Objects.requireNonNull(
    template.exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference<Map<String, String>>() {
    }).getBody());

这样做:

1
2
3
Map<String, Integer> gameIdsMap= Objects.requireNonNull(
    template.exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference<Map<String, Integer>>() {
    }).getBody());

也是正确的(至少对于 Jackson),但如果该值无法转换为 Integer。在这种情况下,它将在运行时引发反序列化异常。

  • @Sotirios Delimanolis 你有杰克逊/格森的参考资料或一个具体的例子来证明这样的事情吗?抱歉,现在没时间写真正的测试。
  • 我对 Spring 模板的 exchange() 的最后一个有疑问。我会试一试。
  • @Sotirios Delimanolis 我检查过了。它像你说的那样工作。至少与杰克逊在一起。我会删除我的答案,但不能因为它被接受。我至少更新了以符合现实。


来源:https://www.codenong.com/57558176/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9123.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?