【问题标题】:Generating json using spring-mvc使用 spring-mvc 生成 json
【发布时间】:2014-10-24 16:31:19
【问题描述】:

我之前尝试使用 spring-mvc (annotation) 生成 json 响应。之后可能会失败,我会找到一些检查点:

  1. 我需要在我的 serverlet 映射器中添加 <mvc:annotation-driven/>。虽然我不知道原因。

  2. 然后我需要添加 @ResponseBody 注释,它应该将返回值绑定为 http 响应,如 documentation 所说。

  3. 我还需要添加一些jacson 依赖项。

我错过了什么吗? 现在我有一堆问题

  1. 为什么我们必须在我的 serverlet xml 中添加它以及整个过程是如何工作的?
  2. 由于json响应最常用,为什么spring需要jackson依赖来生成json?

几天前我在做Struts2 生成 json 响应,这很简单。

  1. 有没有什么方法可以在 spring-mvc 中更轻松地做到这一点?

【问题讨论】:

    标签: java json spring spring-mvc jackson


    【解决方案1】:

    首先你应该明白<mvc:annotation-driven/>注解在很多情况下不仅用于在Spring中生成json响应。此注解允许在 Spring mvc 类中使用不同的注解,例如:@NumberFormat @DateFormat @Controller @Valid,当然还有@ResponseBody。 要生成 json 响应,您只需要在控制器或 servlet 中添加 @ResponseBody 注释并导入用于处理 JSON 的库。 最近 java 有一组 API 用于处理 JSON 作为 Java EE 7 JSR 353 的一部分,实际上它有干净的Oracle tutorial。您也可以使用第三方库,例如Jackson。要处理(解析、生成、转换和查询)JSON 文本,必须拥有其中一个库。 您可以在this article了解最流行的第三方库及其性能

    Here你可以看简单的例子。

    【讨论】:

    • 没有这个<mvc:annotation-driven/>标签我的应用程序的所有注释部分都可以正常工作,除了json部分。
    • 我明白.. 但为什么我实际上需要jackson?有什么办法可以避免吗?
    【解决方案2】:

    如果您使用的是jacson,您可以执行以下操作:

    你的模型

    public class Shop {     
        String name;    
        String staffName[]; 
    }
    

    你的控制者 @控制器 @RequestMapping("/shop/list") 公共类 JSONController {

    @RequestMapping(value="{name}", method = RequestMethod.GET)
    public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
    
        Shop shop = new Shop();
        shop.setName(name);
        shop.setStaffName(new String[]{"mkyong1", "mkyong2"});
    
        return shop;
    }
    

    }

    mvc-dispatcher-servlet.xml

    <context:component-scan base-package="com.example.mypackage" />
    <mvc:annotation-driven />
    

    基本上,您需要检查是否: 您的 Jackson 库已存在于项目类路径中

    mvc:annotation-driven 已启用

    用@ResponseBody注解的返回方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多