Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从restTemplate映射到映射_Java_Spring_Spring Mvc - Fatal编程技术网

Java 从restTemplate映射到映射

Java 从restTemplate映射到映射,java,spring,spring-mvc,Java,Spring,Spring Mvc,我不调用restTemplate并接收rawMap。从调试中,我看到键类和值类是字符串。这没问题,因为响应我的restTemplate的服务以JSON格式发送映射。现在我想用以下代码将地图装箱: Map<String, Integer> gameIdsMap = new HashMap<>(); rawGameIdsMap.forEach(((key, value) -> gameIdsMap.put(String.valueOf(key), Integer.par

我不调用restTemplate并接收rawMap。从调试中,我看到键类和值类是字符串。这没问题,因为响应我的restTemplate的服务以JSON格式发送映射。现在我想用以下代码将地图装箱:

Map<String, Integer> gameIdsMap = new HashMap<>();
rawGameIdsMap.forEach(((key, value) -> gameIdsMap.put(String.valueOf(key), Integer.parseInt(String.valueOf(value)))));
RestTemplate类提供了几种交换方法。 它允许将ParameteredTypeReference的实例指定为参数,其目的是捕获并传递泛型类型。 所以你可以这样做:

Map<String, String> gameIdsMap = Objects.requireNonNull(
    template.exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference<Map<String, String>>() {
    }).getBody());
这样做:

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

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

我敢肯定,但像这样的事情可能会起作用:Map casted=raw.parallelStream.mapMap::put@Sotirios Delimanolis你有没有杰克逊/格森的参考资料或具体例子来说明这一点?对不起,现在没有时间写一个真正的测试。我对最后一个使用Spring模板交换的测试有疑问。“我会试一试的。”索蒂里奥斯·德里马诺利斯我查过了。就像你说的那样。至少对杰克逊来说是这样。我想删除我的答案,但无法删除,因为它已被接受。我更新了至少是为了符合现实。
Map<String, Integer> gameIdsMap= Objects.requireNonNull(
    template.exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference<Map<String, Integer>>() {
    }).getBody());