javascript
了解自定义De / Serializer:JSON绑定概述系列
自定義JSON綁定的最高級方法是使用自定義序列化程序和反序列化程序。
JSON-B序列化器和反序列化器是可用的最低級別的自定義,并且可以訪問JSON處理解析器和生成器。
定制的序列化程序必須實現JsonbSerializer接口,并為serialise()方法提供邏輯。 這段代碼顯示了一個簡單的示例,說明如何自定義Book對象的序列化。
JsonGenerator用于按屬性創建JSON文檔屬性。 id屬性的值是固定的,而作者的名字則被奉為firstName和lastName屬性。
public class BookSerializer implements JsonbSerializer<Book> {@Overridepublic void serialize(Book book,JsonGenerator generator, SerializationContext ctx) {generator.writeStartObject();generator.write("id", "QWE-123-RTS");generator.write("title", book.getTitle());generator.write("firstName", book.getAuthor().split(" ")[0]);generator.write("lastName", book.getAuthor().split(" ")[1]);generator.writeEnd();}}通過實現JsonbDeserializer接口并為deserialize ()方法提供邏輯,可以定制反序列化操作。
此代碼顯示了一個示例,該示例僅從JSON文檔中提取Book的ID 。
public class BookDeserializer implements JsonbDeserializer<String> {@Overridepublic String deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) {while (parser.hasNext()) {JsonParser.Event event = parser.next();if (event == JsonParser.Event.KEY_NAME) {String keyName = parser.getString();if (keyName.equals("id")) {return ctx.deserialize(String.class, parser);}}parser.next();}return "";} }序列化器和反序列化器的實例通過相應的JsonbConfig注冊。 withDeserializers()或。 withSerializers()方法,如下所示。
JsonbConfig config = new JsonbConfig().withDeserializers(new BookDeserializer()).withSerializers(new BookSerializer());或者 ,可以使用@JsonbTypeSerializer或@JsonbTypeDeserializer注釋類型,并傳遞相關定制類的類名。
@JsonbTypeDeserializer(BookDeserializer.class) public class Booklet{}圍捕
因此,今天我們看到了Java EE處理JSON方式的一些令人振奮的新變化。
JSON處理現已與最新的互聯網標準保持同步 ,并且JSON-B的設計師著手標準化開發人員將Java對象轉換為JSON文檔的方法,反之亦然。
如果您到目前為止似乎已經熟悉了API和功能,那是有意的:API標準化了大多數Java開發人員應該已經熟悉的序列化和反序列化技術。
兩種定制模型:運行時和編譯時提供了一種高度靈活和直觀的方式來微調API。
自描述的注釋和配置方法有助于提高生產率并簡化開發。
即使這樣,仍可以輕松實現序列化和反序列化操作的低級操作以及高級定制。
除了我在這些博客文章中討論的內容之外,關于JSON Binding API還有更多的知識要知道。
翻譯自: https://www.javacodegeeks.com/2018/05/get-to-know-custom-de-serializers-json-binding-overview-series.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的了解自定义De / Serializer:JSON绑定概述系列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android内测(安卓n内测)
- 下一篇: jwt-cli:一个用于解码JSON W