diff --git a/src/main/java/org/redkale/util/AnyValue.java b/src/main/java/org/redkale/util/AnyValue.java index a8e536586..5e19f0bf2 100644 --- a/src/main/java/org/redkale/util/AnyValue.java +++ b/src/main/java/org/redkale/util/AnyValue.java @@ -398,7 +398,7 @@ public abstract class AnyValue { return toString(0, (any, space) -> { int index = ((DefaultAnyValue) any).parentArrayIndex; if (index < 0) return null; - return new StringBuilder().append(space).append(" $index: ").append(index).append(",\r\n"); + return new StringBuilder().append(space).append(" '$index': ").append(index).append(",\r\n"); }); } @@ -957,11 +957,29 @@ public abstract class AnyValue { CharSequence v = prefixFunc.apply(this, space); if (v != null) sb.append(v); } - for (Entry en : getStringEntrys()) { - sb.append(space).append(" '").append(en.name).append("': '").append(en.value).append("',\r\n"); + Entry[] stringArray = getStringEntrys(); + Entry[] anyArray = getAnyEntrys(); + int size = (stringArray == null ? 0 : stringArray.length) + (anyArray == null ? 0 : anyArray.length); + int index = 0; + for (Entry en : stringArray) { + if (en.value == null) { + sb.append(space).append(" '").append(en.name).append("': null"); + } else { + sb.append(space).append(" '").append(en.name).append("': '").append(en.value).append("'"); + } + if (++index >= size) { + sb.append("\r\n"); + } else { + sb.append(",\r\n"); + } } - for (Entry en : getAnyEntrys()) { - sb.append(space).append(" '").append(en.name).append("': ").append(en.value.toString(indent + 4, prefixFunc)).append(",\r\n"); + for (Entry en : anyArray) { + sb.append(space).append(" '").append(en.name).append("': ").append(en.value.toString(indent + 4, prefixFunc)); + if (++index >= size) { + sb.append("\r\n"); + } else { + sb.append(",\r\n"); + } } sb.append(space).append('}'); return sb.toString(); diff --git a/src/test/java/org/redkale/test/util/AnyValuePropertiesTest.java b/src/test/java/org/redkale/test/util/AnyValuePropertiesTest.java index 9b917e0fb..34fe55152 100644 --- a/src/test/java/org/redkale/test/util/AnyValuePropertiesTest.java +++ b/src/test/java/org/redkale/test/util/AnyValuePropertiesTest.java @@ -38,44 +38,44 @@ public class AnyValuePropertiesTest { + " 'source': {\r\n" + " 'my': {\r\n" + " 'sss': 'my s',\r\n" - + " 'ttt': 'my t',\r\n" + + " 'ttt': 'my t'\r\n" + " },\r\n" + " 'you': {\r\n" + " 'ttt': 'you t',\r\n" - + " 'sss': 'you s',\r\n" - + " },\r\n" + + " 'sss': 'you s'\r\n" + + " }\r\n" + " },\r\n" + " 'ddd': {\r\n" - + " $index: 0,\r\n" + + " '$index': 0,\r\n" + " 'ww': 'ww 0',\r\n" - + " 'nn': 'nn 0',\r\n" + + " 'nn': 'nn 0'\r\n" + " },\r\n" + " 'ddd': {\r\n" - + " $index: 2,\r\n" + + " '$index': 2,\r\n" + " 'ww': 'ww 2',\r\n" - + " 'nn': 'nn 2',\r\n" + + " 'nn': 'nn 2'\r\n" + " },\r\n" + " 'ddd': {\r\n" - + " $index: 10,\r\n" + + " '$index': 10,\r\n" + " 'ww': 'ww 10',\r\n" - + " 'nn': 'nn 10',\r\n" + + " 'nn': 'nn 10'\r\n" + " },\r\n" + " 'mmm': {\r\n" + " 'node': 'n0',\r\n" + " 'node': 'n5',\r\n" - + " 'node': 'n20',\r\n" + + " 'node': 'n20'\r\n" + " },\r\n" + " 'bbb': {\r\n" + " 'sss': 'value s',\r\n" + " 'qqq': {\r\n" - + " 'rrr': 'value r',\r\n" - + " },\r\n" + + " 'rrr': 'value r'\r\n" + + " }\r\n" + " },\r\n" + " 'aaa': {\r\n" + " 'ppp': 'value p',\r\n" - + " 'ooo': 'value o',\r\n" - + " },\r\n" - + " },\r\n" + + " 'ooo': 'value o'\r\n" + + " }\r\n" + + " }\r\n" + "}"; Assertions.assertEquals(result, AnyValue.loadFromProperties(properties).toString()); }