Skip to content

Commit 38c3a14

Browse files
committed
Improve json to xml converter with attribute on top level.
1 parent 6d2078e commit 38c3a14

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2050,7 +2050,7 @@ public static class XmlObject {
20502050
@SuppressWarnings("unchecked")
20512051
public static void writeXml(Map map, String name, XmlStringBuilder builder, boolean parentTextFound) {
20522052
if (map == null) {
2053-
builder.append(NULL);
2053+
XmlValue.writeXml(map, name, builder, false);
20542054
return;
20552055
}
20562056

@@ -2322,15 +2322,14 @@ public String toXml() {
23222322
}
23232323

23242324
public static String toXml(Map map) {
2325-
final XmlStringBuilder builder;
2326-
if ((map == null || map.size() != 1)
2325+
final XmlStringBuilder builder = new XmlStringBuilderWithoutRoot();
2326+
if (map == null || map.size() != 1
2327+
|| ((String) ((Map.Entry) map.entrySet().iterator().next()).getKey()).startsWith("-")
23272328
|| ((Map.Entry) map.entrySet().iterator().next()).getValue() instanceof List) {
2328-
builder = new XmlStringBuilder();
2329+
XmlObject.writeXml(map, "root", builder, false);
23292330
} else {
2330-
builder = new XmlStringBuilderWithoutRoot();
2331+
XmlObject.writeXml(map, null, builder, false);
23312332
}
2332-
2333-
XmlObject.writeXml(map, null, builder, false);
23342333
return builder.toString();
23352334
}
23362335

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ public void toXmlFromMap() {
13081308
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n"
13091309
+ " <First__EA__item>1</First__EA__item>\n <Second__EA__item>2</Second__EA__item>\n</root>",
13101310
U.toXml(testMap));
1311-
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\nnull\n</root>", U.toXml((Map) null));
1311+
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>null</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));
13141314
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<__EE__EMPTY__EE__>1"
@@ -1652,6 +1652,15 @@ public void toXmlFromJson10() {
16521652
U.toXml((Map<String, Object>) U.fromJson(json2)));
16531653
}
16541654

1655+
@SuppressWarnings("unchecked")
1656+
@Test
1657+
public void toXmlFromJson11() {
1658+
final String json = "{\n \"-id\": 1\n}";
1659+
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1660+
+ "<root>\n <__FU__id>1</__FU__id>\n</root>",
1661+
U.toXml((Map<String, Object>) U.fromJson(json)));
1662+
}
1663+
16551664
@SuppressWarnings("unchecked")
16561665
@Test
16571666
public void toXml() {

0 commit comments

Comments
 (0)