Skip to content

Commit d17b6cb

Browse files
committed
Add empty key support into U.toXml(map) and U.fromJson(string).
1 parent f83c99d commit d17b6cb

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/main/java/com/github/underscore/lodash/U.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,9 +1673,12 @@ public static void writeJson(Object value, JsonStringBuilder builder) {
16731673

16741674
public static String unescapeName(final String name) {
16751675
final int length = name.length();
1676-
if (length == 0) {
1676+
if (length == 0 || "__EE__EMPTY__EE__".equals(name)) {
16771677
return "";
16781678
}
1679+
if ("-__EE__EMPTY__EE__".equals(name)) {
1680+
return "-";
1681+
}
16791682
StringBuilder result = new StringBuilder();
16801683
int underlineCount = 0;
16811684
StringBuilder lastChars = new StringBuilder();
@@ -2222,9 +2225,9 @@ public static void writeXml(Object value, String name, XmlStringBuilder builder,
22222225
public static String escapeName(String name) {
22232226
final int length = name.length();
22242227
if (length == 0) {
2225-
return "";
2228+
return "__EE__EMPTY__EE__";
22262229
}
2227-
StringBuilder result = new StringBuilder();
2230+
final StringBuilder result = new StringBuilder();
22282231
char ch = name.charAt(0);
22292232
if (com.sun.org.apache.xerces.internal.util.XMLChar.isNameStart(ch)) {
22302233
result.append(ch);

src/test/java/com/github/underscore/lodash/StringTest.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,8 +1311,8 @@ public void toXmlFromMap() {
13111311
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\nnull\n</root>", U.toXml((Map) null));
13121312
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n <item>\n"
13131313
+ " </item>\n</root>", U.toXml(testMap2));
1314-
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<>1"
1315-
+ "</>", U.toXml(testMap3));
1314+
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<__EE__EMPTY__EE__>1"
1315+
+ "</__EE__EMPTY__EE__>", U.toXml(testMap3));
13161316
}
13171317

13181318
@SuppressWarnings("unchecked")
@@ -1430,6 +1430,19 @@ public void toJsonFromXml6() {
14301430
U.toJson((Map<String, Object>) U.fromXml(xml)));
14311431
}
14321432

1433+
@SuppressWarnings("unchecked")
1434+
@Test
1435+
public void toJsonFromXml7() {
1436+
final String xml = "<__EE__EMPTY__EE__ __EE__EMPTY__EE__=\"1\">\n"
1437+
+ "</__EE__EMPTY__EE__>";
1438+
assertEquals("{\n"
1439+
+ " \"\": {\n"
1440+
+ " \"-\": \"1\"\n"
1441+
+ " }\n"
1442+
+ "}",
1443+
U.toJson((Map<String, Object>) U.fromXml(xml)));
1444+
}
1445+
14331446
@SuppressWarnings("unchecked")
14341447
@Test
14351448
public void toXmlFromJson() {
@@ -1572,8 +1585,8 @@ public void toXmlFromJson5() {
15721585
+ " }\n"
15731586
+ "}";
15741587
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1575-
+ "<>\n"
1576-
+ "</>",
1588+
+ "<__EE__EMPTY__EE__>\n"
1589+
+ "</__EE__EMPTY__EE__>",
15771590
U.toXml((Map<String, Object>) U.fromJson(json)));
15781591
}
15791592

0 commit comments

Comments
 (0)