使用MultiValuedMap作为ResponseBody给出{"空" :false}作为回应

时间:2016-02-20 01:09:08

标签: spring-web

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

  

{"空" :false}

使用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);
    }
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

致电asMap()上的MultiValuedMap以查看实施Map的内容,并将其放入ResponseBody以获取特殊情况Map基于序列化。