【问题标题】:Spring MVC Rest / JSON serviceSpring MVC 休息/JSON 服务
【发布时间】:2011-11-15 13:17:31
【问题描述】:

我刚刚尝试将其添加到我的示例控制器中:

@RequestMapping(value="/jsontest", method=RequestMethod.GET)
    public @ResponseBody User getUserAsJson() {

        User jsonUser = new User();
        jsonUser.setFirstName("Mickey");
        jsonUser.setLastName("Mouse");
        jsonUser.setUsername("mmous");


        return jsonUser;
    }

但是,访问 /jsontest url 以 406 http 错误结束 => 不可接受。

那么...目前产生“application/json”响应而不是返回 jsp/html 视图的工作方法是什么?

我正在使用 Spring Framework 3.0.6 RELEASE。

【问题讨论】:

  • 您的 CLASSPATH 中是否有 jackson.jar,您是否使用 Accept: application/json 调用 /jsontest
  • 1) 如何将 jackson.jar 添加为 Maven 依赖项?
  • 2) 我不想用“Accept:”打电话,我想要json响应,总是!
  • 我添加了一个答案。请注意,如果您的浏览器正在发送application/xml,那么您不能简单地返回 JSON,Spring MVC 将为您返回 406。但是如果你的浏览器发送一个接受通配符的类型,Spring MVC 将首先选择可用的,让它成为 JSON。

标签: json rest spring-mvc controller


【解决方案1】:

Jackson 映射器添加到您的 CLASSPATH:

<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-asl</artifactId>
   <version>1.9.2</version>
</dependency>

并使用正确的接受标头调用您的网络服务,例如:

$ curl -H "Accept: application/json" localhost:8080/app/jsontest

或者在浏览器中使用$.getJSON()

【讨论】:

  • 谢谢 Tomasz,我明白了,但是......为什么它选择 Json 作为默认返回格式?我的意思是……写在哪里?我读了一些关于 httpmessageconverters 的东西,但不明白。 :(
  • 不赘述,这个逻辑被编码成一个模糊的writeWithMessageConverters。在那里放一个断点,看看它是如何工作的。
  • 不错!那么我可以断言“@ResponseBody 返回一个字符串将返回 text/plain 并且 @ResponseBody 返回一个 bean 将返回 application/json”吗?
  • 如您所见,这取决于您的 CLASSPATH。如果它在您的项目中以这种方式工作,我认为这是一个有效的假设。
【解决方案2】:
@RequestMapping(value="/jsontest", method=RequestMethod.GET,produces="application/json")
    public @ResponseBody User getUserAsJson() {

        User jsonUser = new User();
        jsonUser.setFirstName("Mickey");
        jsonUser.setLastName("Mouse");
        jsonUser.setUsername("mmous");


        return jsonUser;
    }

这应该可以添加产生属性..

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2013-03-27
    • 2014-12-11
    • 2012-10-13
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多