From b58b630be0b6c8ef858a19c26abba5e7ee73d5fc Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 25 Sep 2024 15:11:36 +0800 Subject: [PATCH] JsonDynEncoder --- .../java/org/redkale/convert/json/JsonDynEncoder.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/redkale/convert/json/JsonDynEncoder.java b/src/main/java/org/redkale/convert/json/JsonDynEncoder.java index 2a5687d0d..0fd76452e 100644 --- a/src/main/java/org/redkale/convert/json/JsonDynEncoder.java +++ b/src/main/java/org/redkale/convert/json/JsonDynEncoder.java @@ -793,7 +793,9 @@ public abstract class JsonDynEncoder extends ObjectEncoder { if (factory.findFieldCoder(clazz, field.getName()) != null) { return null; } - if (!factory.isSimpleMemberType(clazz, field.getGenericType(), field.getType())) { + Type fieldType = field.getGenericType(); + if (!(factory.findEncoder(fieldType) instanceof JsonDynEncoder) + && !factory.isSimpleMemberType(clazz, fieldType, field.getType())) { return null; } String name = factory.readConvertFieldName(clazz, field); @@ -844,7 +846,9 @@ public abstract class JsonDynEncoder extends ObjectEncoder { if (ref != null && ref.fieldFunc() != null) { return null; } - if (!factory.isSimpleMemberType(clazz, method.getGenericReturnType(), method.getReturnType())) { + Type getterType = method.getGenericReturnType(); + if (!(factory.findEncoder(getterType) instanceof JsonDynEncoder) + && !factory.isSimpleMemberType(clazz, getterType, method.getReturnType())) { return null; } String name = factory.readConvertFieldName(clazz, method);