diff --git a/src/main/java/org/redkale/convert/ObjectDecoder.java b/src/main/java/org/redkale/convert/ObjectDecoder.java index 880f01fb1..80096be9a 100644 --- a/src/main/java/org/redkale/convert/ObjectDecoder.java +++ b/src/main/java/org/redkale/convert/ObjectDecoder.java @@ -374,7 +374,7 @@ public class ObjectDecoder implements Decodeable { DeMemberInfo info = this.memberInfo; if (this.creatorConstructorMembers == null) { // 空构造函数 final T result = this.creator == null ? null : this.creator.create(); - do { + while (in.hasNext()) { DeMember member = in.readField(info); in.readColon(); if (member == null) { @@ -383,7 +383,7 @@ public class ObjectDecoder implements Decodeable { Object val = readDeMemberValue(in, member); member.getAttribute().set(result, val); } - } while (in.hasNext()); + } in.readObjectE(typeClass); return result; } else { // 带参数的构造函数 @@ -391,7 +391,7 @@ public class ObjectDecoder implements Decodeable { final Object[] constructorParams = new Object[constructorFields.length]; final Object[][] otherParams = new Object[info.length()][2]; int oc = 0; - do { // in.hasNext()放在下面,因readObjectB已经读了{ + while (in.hasNext()) { DeMember member = in.readField(info); in.readColon(); if (member == null) { @@ -410,7 +410,7 @@ public class ObjectDecoder implements Decodeable { otherParams[oc++] = new Object[] {member.attribute, val}; } } - } while (in.hasNext()); + } in.readObjectE(typeClass); if (this.creator == null) { return null; diff --git a/src/test/java/org/redkale/test/convert/json/Json5Test.java b/src/test/java/org/redkale/test/convert/json/Json5Test.java index 5a32cdb16..c9788b55b 100644 --- a/src/test/java/org/redkale/test/convert/json/Json5Test.java +++ b/src/test/java/org/redkale/test/convert/json/Json5Test.java @@ -5,7 +5,9 @@ */ package org.redkale.test.convert.json; +import java.io.ByteArrayInputStream; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.*; import org.junit.jupiter.api.*; import org.redkale.convert.Convert; @@ -42,10 +44,17 @@ public class Json5Test { System.out.println(bean2.name); Assertions.assertTrue(bean.equals(bean2)); System.out.println(convert.convertTo(bean2)); + bean2 = convert.convertFrom(Json5Bean.class, new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8))); + System.out.println(bean2.name); + Assertions.assertTrue(bean.equals(bean2)); + System.out.println(convert.convertTo(bean2)); String arrayJson = "[" + json + "," + json + "," + "]"; Json5Bean[] beans = convert.convertFrom(Json5Bean[].class, arrayJson); System.out.println(convert.convertTo(beans)); + beans = convert.convertFrom( + Json5Bean[].class, new ByteArrayInputStream(arrayJson.getBytes(StandardCharsets.UTF_8))); + System.out.println(convert.convertTo(beans)); String intjson = "[1,2,3,4,]"; int[] ints1 = convert.convertFrom(int[].class, intjson); diff --git a/src/test/java/org/redkale/test/convert/json/JsonMainTest.java b/src/test/java/org/redkale/test/convert/json/JsonMainTest.java index f78d0a0d2..37629d939 100644 --- a/src/test/java/org/redkale/test/convert/json/JsonMainTest.java +++ b/src/test/java/org/redkale/test/convert/json/JsonMainTest.java @@ -108,6 +108,9 @@ public class JsonMainTest { final JsonConvert convert = JsonConvert.root(); long v = convert.convertFrom(long.class, "100"); Assertions.assertEquals(100, v); + Map map = convert.convertFrom(JsonConvert.TYPE_MAP_STRING_STRING, "{}"); + Assertions.assertTrue(map.isEmpty()); + convert.convertFrom(SimpleChildEntity.class, "{}"); } @Test