【问题标题】:Difference between jersey-media-json-jackson, jersey-json,jersey-media-multipart?jersey-media-json-jackson、jersey-json、jersey-media-multipart 之间的区别?
【发布时间】:2016-03-26 08:56:30
【问题描述】:
我想开发一个 web api,它将生成和使用 JSON 和 XML 数据。
我已经使用 JAXB 来支持 XML,它运行良好。
现在我想添加 JSON 类型。我研究了不同的教程,都使用了不同的依赖项,如下所示:
- jersey-media-json-jackson
- 球衣-json
- jersey-media-multipart
请帮助我,它是完美的并且支持 XML 和 JSON。
它们之间有什么区别?
【问题讨论】:
标签:
java
xml
rest
jackson
jersey-2.0
【解决方案1】:
1. Jersey-Media-Json-Jackson
Jackson JSON 处理器可以通过提供 custom Jackson 2 ObjectMapper(或 Jackson 1 的 ObjectMapper)实例来控制。如果您需要重新定义默认的 Jackson 行为并微调 JSON 数据结构的外观,这可能会很方便。所有 Jackson 功能的详细描述超出了本指南的范围。下面的示例为您提供了有关如何将 ObjectMapper (ObjectMapper) 实例连接到 Jersey 应用程序的提示。
为了使用 Jackson 作为您的 JSON (JAXB/POJO) 提供者,您需要为 ObjectMapper 注册 JacksonFeature (Jackson1Feature) 和 ContextResolver<T>,
2. Jersey-Json:
Jersey JSON 支持作为一组 JAX-RS MessageBodyReader<T> 和 MessageBodyWriter<T> 提供程序与 jersey-json 模块一起分发。这些提供程序支持在使用 JSON 格式时使用三种基本方法:
POJO support
JAXB based JSON support
Low-level, JSONObject/JSONArray based JSON support
3. Jersey-media-multipart
此模块中的多部分在JAX-RS runtime environment 中提供了multipart/* 请求和响应主体的集成。已注册的提供程序集被利用,因为此类消息的正文部分的内容类型重用了相同的 MessageBodyReader<T>/MessageBodyWriter<T> 实现,该实现将用于该内容类型作为独立实体。
目前支持以下list of general MIME MultiPart 功能:
MIME-Version: 1.0 HTTP 标头包含在生成的响应中。
在已处理的请求中,它被接受,但不是必需的。
使用 MIME MultiPart 的 MessageBodyReader 实现
实体。
用于生成 MIME MultiPart 的 MessageBodyWriter 实现
实体。适当的@Provider 用于序列化每个主体
部分,基于其媒体类型。
在生成的
Content-Type 标头(如果尚不存在)。