【问题标题】:Spring MVC: Is it possible to return a Map<String, Object> dynamically converted to JSON using Jackson?Spring MVC:是否可以使用 Jackson 返回一个动态转换为 JSON 的 Map<String, Object>?
【发布时间】:2012-05-04 06:28:55
【问题描述】:

我想让我的 Spring MVC Web 应用程序以 JSON 形式返回模型的状态。

我意识到通过@ResponseBody注解控制器方法,你可以在JSON和对应类型的对象之间进行转换。但是,我要查看的模型对象直接与数据库对话,而本身不维护任何状态。

因此,我想知道我是否可以只填充一个 Map(例如 HashMap),并由 Jackson 序列化?我意识到我可以为包含状态的模型创建新的 View 类,但我宁愿不必这样做。

谢谢。

【问题讨论】:

    标签: json spring-mvc jackson


    【解决方案1】:

    我从我的几个控制器返回一个Map&lt;String, ?&gt;,Jackson 自动将内容转换为 JSON - 正如您所说,当您还没有一个域对象时,这样做更容易保留您要返回的信息。

    只要您的类路径中有 jackson 库,并且 spring 配置中有 &lt;mvc:annotation-driven/&gt;,这应该会自动为您完成。我用于 Jackson 的 maven 依赖项:

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.8.5</version>
            <scope>runtime</scope>
        </dependency>
    

    【讨论】:

    • 正确。一个小补充:你也可以考虑使用JsonNode作为类型;这表示一棵 JSON 树,并且通常比 Maps 更方便处理(遍历、修改),因为可以省略 null 检查、强制转换;但仍然不需要创建匹配的 POJO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2014-01-29
    相关资源
    最近更新 更多