1

我正在尝试使用 MultiValuedMap 作为休息服务的 ResponseBody,但我在浏览器中得到的响应是:

{“空”:假}

使用 MultiValueMap 作为 ResponseBody 可以正常工作,但是在升级 org.apache.commons 库后,不推荐使用 MultiValueMap 并使用 MultiValuedMap 的说明来代替。

这是我的代码的相关部分:

import org.apache.commons.collections4.MultiValuedMap;

@RestController("DatabaseDefinitionRestController")
public class DatabaseDefinitionRestController {

    @RequestMapping(value = "/database/{id}/definitions", method = RequestMethod.GET)
    public MultiValuedMap<Long, DatabaseDefinition> mapDatabaseDefinitions(@PathVariable Long id) {
        return databaseDefinitionService.loadDatabaseDefinition(id);
    }
}

我也试过:

import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;

@RestController("DatabaseDefinitionRestController")
public class DatabaseDefinitionRestController {

    @RequestMapping(value = "/database/{id}/definitions", method = RequestMethod.GET)
    public ArrayListValuedHashMap<Long, DatabaseDefinition> mapDatabaseDefinitions(@PathVariable Long id) {
        return databaseDefinitionService.loadDatabaseDefinition(id);
    }
}

任何帮助,将不胜感激。

4

1 回答 1

2

无论您使用什么进行序列化,都可能对所有核心 Java 集合(包括Map. 不推荐使用的MultiValueMap工具Map,因此可以从这种特殊处理中受益。新MultiValuedMap的,无论出于何种原因,都没有。这使得它依赖于默认的一般处理,这取决于所使用的任何具体类的内部实现。

调用asMap()MultiValuedMap查看它的实现Map,并将其放入您的ResponseBody以获得Map基于特殊情况的序列化。

于 2016-02-20T01:26:01.047 回答