在@RestController方法中返回多个不同的对象

时间:2015-12-08 21:35:06

标签: java xml spring

我目前正在使用Spring Rest Web Services,我已经设置了一个@RestController,其中包含一些方法,每个方法都有一个@RequestMapping。问题是每个方法当然只能返回一种类型的对象。但是,对于每个请求,我可能想要返回一个A类实例,一个B类属性和一个包含C类对象的List。当然,我可以发出多个请求,但有没有办法可以返回多个不同的有一个请求的对象?

有关详细信息:我希望以XML格式将对象发送回移动客户端。

2 个答案:

答案 0 :(得分:2)

您可以让方法返回Map<String,Object>

@RequestMapping(value = "testMap", method = RequestMethod.GET)
public Map<String,Object> getTestMap() {
    Map<String,Object> map=new HashMap<>();
    //put all the values in the map
    return map;
}

答案 1 :(得分:0)

您可以返回 JsonNode

@RequestMapping(..)
@ResponseBody
public JsonNode myGetRequest(){
...
//rawJsonString is the raw Json that we want to proxy back to the client
return objectMapper.readTree(rawJsonString);
}

Jackson转换器知道如何将JsonNode转换为普通的Json。

或者你可以告诉Spring你的方法产生json 产生=&#34; application / json&#34;

@RequestMapping(value = "test", method = RequestMethod.GET, produces="application/json")
public @ResponseBody
String getTest() {
    return "{\"a\":1, \"b\":\"foo\"}";
}