JSON绑定的Java API(JSON-B)1.0增强了Java EE平台对JSON数据交换格式的整体支持。 事实证明, 用于JSON处理的Java API(JSON-P)1.1十分流行,它们共同构成了完美的合作伙伴,填补了Java EE的JSON功能的长期缺陷。
本系列的下一篇文章介绍了JSON绑定操作的自定义。
JSON-B规范将已经变得司空见惯的行业实践和方法进行了整理。 它大量使用注释来使用映射语义标记类和字段,并提供了处理复杂数据结构时经常需要的可扩展性。
开箱即用,它提供了满足合理期望的默认映射,用于序列化和反 序列化 。 可以使用两种定制方法来覆盖默认定制:
- 编译时间注释和
- 运行时配置构建器。
对于高级定制,API在运行时构建器和映射注释不足时提供适配器和序列化器/反序列化器 。
标题功能
该API的主要功能是以直观且易于使用的方式在Java类和JSON文档之间提供绑定支持 ,因此,不具备JSON知识的开发人员应该能够使用该API有效地进行开发。 对于那些具有其他JSON反序列化库(例如GSON和Jackson)的经验的人,会感到非常熟悉。
JSON-B API提供了两个入口点接口: Jsonb 和JsonbBuilder 。 Jsonb接口通过toJson()和fromJson()方法提供序列化和反序列化功能,而JsonbBuilder接口为客户端提供对Jsonb实例的访问点。 它基于一组可选配置来构建实例。
简单的例子
让我们来看一个简单的示例,该示例对Book.class的实例进行往返转换。
要开始序列化或反序列化,您需要一个Jsonb实例。 您可以通过在JsonBuilder接口上调用静态工厂方法create()来创建 它 。 使用此实例,您可以通过选择适当的重载toJson()或fromJson()方法来执行所需的所有序列化和反序列化操作。
在此代码段中,我调用了最简单的toJson()方法并将其传递给book对象。
Book book = new Book("SHDUJ-4532", "Fun with Java", "Alex Theedom");
String bookJson = JsonbBuilder.create().toJson(book);
此方法的返回值是一个String ,它是传递给toJson()方法的对象的JSON数据表示形式。
现在,我们将注意力转向反序列化操作。 它就像序列化一样简单,并且还需要Jsonb的实例。 在代码片段中,我调用最简单的fromJson()方法并将其传递给上一个示例生成的JSON String,这是我要反序列化的JSON数据,并且它是目标类型,作为类类型。
String json = "{\"author\":\"Alex Theedom\"," +"\"id\":\"SHDUJ-4532\"," +"\"title\":\"Fun with Java\"}";
Book book = JsonbBuilder.create().fromJson(json, Book.class);
在这些示例中,我使用了Jsonb接口上可用的重载方法范围内最简单的toJson()和fromJson()方法。 现在,让我们更深入地研究一下如何定制序列化和反序列化过程。
现在,对JSON Binding API的介绍进行了总结,关于JSON-B的知识还很多。
翻译自: https://www.javacodegeeks.com/2018/04/get-to-know-json-binding-overview-series.html