如何让 Java / Spring MVC 返回基于 jsonapi.org ID 的格式?
Posted
技术标签:
【中文标题】如何让 Java / Spring MVC 返回基于 jsonapi.org ID 的格式?【英文标题】:How can I get Java / Spring MVC to return jsonapi.org ID based format? 【发布时间】: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 放在我的“好有”列表中。 【参考方案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,这样我就可以从所有额外的库中受益魔法。
【讨论】:
以上是关于如何让 Java / Spring MVC 返回基于 jsonapi.org ID 的格式?的主要内容,如果未能解决你的问题,请参考以下文章
JAVA spring MVC 前台如何取得后台返回的map类型的数据?