【问题标题】:Spring Controller unable to return JSONSpring Controller 无法返回 JSON
【发布时间】:2012-06-01 19:09:00
【问题描述】:

我有一个带有多个方法的 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 内部服务器错误”,如果我调试,则 getMyService().getMyObject() 具有正确的数据。那么500错误的原因是什么?为什么它适用于 XML 请求但不适用于 JSON?谢谢!

【问题讨论】:

    标签: xml json spring tomcat web


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-07-09
        • 2019-09-26
        • 2020-09-22
        • 2015-12-30
        • 1970-01-01
        • 2014-01-06
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多