From 7f883ccf0e263293183ee89589e02e1cac492f5a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 22 Jun 2021 15:03:59 +0200 Subject: [PATCH] [jOOQ/jOOQ#11165] Converter should use Jackson kotlin module if available when mapping JSON to kotlin data classes --- jOOQ/src/main/java/org/jooq/impl/Convert.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Convert.java b/jOOQ/src/main/java/org/jooq/impl/Convert.java index 590e15daaa..5fccaede42 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Convert.java +++ b/jOOQ/src/main/java/org/jooq/impl/Convert.java @@ -213,7 +213,16 @@ final class Convert { try { Class klass = Class.forName("com.fasterxml.jackson.databind.ObjectMapper"); - jsonMapper = klass.getDeclaredConstructor().newInstance(); + try { + Class kotlin = Class.forName("com.fasterxml.jackson.module.kotlin.ExtensionsKt"); + jsonMapper = kotlin.getMethod("jacksonObjectMapper").invoke(kotlin); + log.debug("Jackson kotlin module is available"); + } + catch (Exception e) { + jsonMapper = klass.getDeclaredConstructor().newInstance(); + log.debug("Jackson kotlin module is not available"); + } + jsonReadMethod = klass.getMethod("readValue", String.class, Class.class); jsonWriteMethod = klass.getMethod("writeValueAsString", Object.class); log.debug("Jackson is available");