Spring Controller无法返回JSON

时间:2012-05-26 15:05:13

标签: xml json spring tomcat web

我有一个带有多个方法的spring控制器,每个方法都根据标头以XML或JSON格式返回数据。所有方法都成功返回数据,但在返回JSON数据时出现问题的方法除外。我看到的只是日志中的“500内部服务器错误”

这就是我的方法的样子:

@RequestMapping (value="/test", method=RequestMethod.GET, headers ={"Accept=text/xml, application/json"})
public @ResponseBody MyObject getMyObject() throws FileNotFoundException, JAXBException {

    return getMyService().getMyObject();
}   

Eclipse控制台没有显示任何错误, Tomcat日志只显示“500 Internal Server Error”,如果我调试则getMyService()。getMyObject()具有正确的数据。那么500错误的原因是什么?为什么它适用于XML请求但不适用于JSON?谢谢!

2 个答案:

答案 0 :(得分:3)

问题是我没有为MyObject中的几个私有变量提供公共getter。

答案 1 :(得分:1)

显然,当json序列化失败时会出现此问题(另请参见此处Internal server error on Jackson @ResponseBody)。虽然我仍然不完全清楚,为什么我们没有通过Spring获得例外,这个简短的回答对我来说非常实用:https://stackoverflow.com/a/25011673/4340425

简而言之:通过手动实例化对象映射器并尝试序列化对象,您可以获得显示问题的异常(通常缺少getter或尝试序列化某些非原始的whith,而没有指定适当的映射器)。