【问题标题】:How can I get Java / Spring MVC to return jsonapi.org ID based format?如何让 Java / Spring MVC 返回基于 jsonapi.org ID 的格式?
【发布时间】:2013-11-28 00:23:20
【问题描述】:

我正在实现一个供 Ember-Data REST 适配器使用的 JSON API。

Ember-Data REST 适配器需要返回的 JSON 遵循以下格式:
http://jsonapi.org/format/

Ember-Data 文档:
http://emberjs.com/guides/models/the-rest-adapter/#toc_json-conventions

我知道如何使用 Spring MVC 3.2 / Jackson 返回 JSON,这不是问题。但是,JSON 格式必须遵守 jsonapi.org 中指定的格式。

如果您在 google 上搜索“ember data sweetpie 适配器”,您可以找到一个示例 Django 实现(抱歉,没有足够的信誉点用于链接 [原文如此]),并且 rable 似乎也有一个。

似乎 jsonapi.org 是多个框架/语言的标准。

我真的需要自己在 Java 中实现这个标准吗?

任何帮助/指针将不胜感激。

非常感谢!

【问题讨论】:

  • 您可能需要实现自定义 Jackson 序列化程序。
  • 是的,这可能是唯一的解决方案。我真的找不到关于 Java 实现的任何东西。似乎新的 Spring MVC 3.2 HyperMedia 格式使用超文本应用程序语言 (HAL) [stateless.co/hal_specification.html],但这种格式似乎已被 jsonapi.org 格式 [jsonapi.org/faq/] 拒绝。如果我有时间编写这样的序列化程序,我会确保开源它......
  • 序列化器 + 解析器,实际上 :-) 需要完整的 CRUD 操作集。真可惜。我想我现在必须将 Ember Data 放在我的“好有”列表中。

标签: java json spring-mvc ember.js ember-data


【解决方案1】:

Genson 似乎支持 JSONAPI 格式。

这是一个示例单元测试:

JsonSerDeserSymetricTest.java

演示将提要反序列化到类中。课程包括:

Feed.java - 有一个 id 字段 Link.java - 有一个 href 字段

Genson 将与Spring MVC 和Jersey for JAX-RS 集成。

【讨论】:

  • Genson 或该类中没有任何类似于 jsonapi 规范的内容。
【解决方案2】:

我认为您可以像这样更改 spring 配置文件中的 JSON 属性:

<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
    <list>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="prefixJson" value="true" />
        </bean>
    </list>
</property>
</bean>

你也可以看看Spring JSON Mapping。

我希望这会有所帮助!

【讨论】:

    【解决方案3】:

    Java 有一些 JSON:API 实现:

    • Katharsis 支持 Spring,但不知何故死了多年
    • Crnk 支持 Spring Boot 2 远不止 JSON:API 序列化器/反序列化器
    • JSON:API for Spring HATEOAS 基于 Spring HATEOAS 和 Jackson 并支持 Boot 2,非常轻量级但新鲜

    澄清一下,我没有使用任何库,但如果必须,我会尝试 Kai Toedter 的最后一个库,除非我需要一个非常大的系统,仅包含 JSON:API,这样我就可以从所有额外的库中受益魔法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2011-02-26
      • 2010-12-26
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多