Skip to content

Commit c1e833c

Browse files
committed
Added new mode FORCE_ADD_ROOT_JSON_TO_XML to the U.jsonToXml(json, mode, [newRootName]).
1 parent 64af144 commit c1e833c

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class U<T> extends Underscore<T> {
6363
new HashSet<>(Arrays.asList("GET", "POST", "PUT", "DELETE"));
6464
private static final int BUFFER_LENGTH_1024 = 1024;
6565
private static final int RESPONSE_CODE_400 = 400;
66+
private static final String ROOT = "root";
6667
private static String upper = "[A-Z\\xc0-\\xd6\\xd8-\\xde\\u0400-\\u04FF]";
6768
private static String lower = "[a-z\\xdf-\\xf6\\xf8-\\xff]+";
6869
private static String selfClosing = "-self-closing";
@@ -115,7 +116,8 @@ public enum Mode {
115116
FORCE_ATTRIBUTE_USAGE_AND_DEFINE_ROOT_NAME,
116117
REPLACE_NULL_WITH_EMPTY_VALUE,
117118
REPLACE_EMPTY_STRING_WITH_EMPTY_VALUE,
118-
REMOVE_FIRST_LEVEL_XML_TO_JSON
119+
REMOVE_FIRST_LEVEL_XML_TO_JSON,
120+
FORCE_ADD_ROOT_JSON_TO_XML
119121
}
120122

121123
public U(final Iterable<T> iterable) {
@@ -2464,6 +2466,11 @@ public static String jsonToXml(
24642466
replaceEmptyStringWithEmptyValue((Map) object),
24652467
identStep,
24662468
newRootName);
2469+
} else if (mode == Mode.FORCE_ADD_ROOT_JSON_TO_XML
2470+
&& !Xml.XmlValue.getMapKey(object).equals(ROOT)) {
2471+
final Map<String, Object> map = U.newLinkedHashMap();
2472+
map.put(Underscore.isNull(newRootName) ? ROOT : newRootName, object);
2473+
result = Xml.toXml(map, identStep);
24672474
} else {
24682475
result = Xml.toXml((Map) object, identStep);
24692476
}

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

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,58 @@ public void renameRoot() {
788788
"json"));
789789
}
790790

791+
@Test
792+
public void forceAddRoot() {
793+
assertEquals(
794+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
795+
+ "<root>\n"
796+
+ " <data array=\"true\">\n"
797+
+ " <a>b</a>\n"
798+
+ " </data>\n"
799+
+ "</root>",
800+
U.jsonToXml(
801+
"{\n"
802+
+ " \"data\": [\n"
803+
+ " {\n"
804+
+ " \"a\": \"b\"\n"
805+
+ " }\n"
806+
+ " ]\n"
807+
+ "}",
808+
U.Mode.FORCE_ADD_ROOT_JSON_TO_XML));
809+
assertEquals(
810+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
811+
+ "<newroot>\n"
812+
+ " <data array=\"true\">\n"
813+
+ " <a>b</a>\n"
814+
+ " </data>\n"
815+
+ "</newroot>",
816+
U.jsonToXml(
817+
"{\n"
818+
+ " \"data\": [\n"
819+
+ " {\n"
820+
+ " \"a\": \"b\"\n"
821+
+ " }\n"
822+
+ " ]\n"
823+
+ "}",
824+
U.Mode.FORCE_ADD_ROOT_JSON_TO_XML, "newroot"));
825+
assertEquals(
826+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
827+
+ "<root>\n"
828+
+ " <element array=\"true\">\n"
829+
+ " <a>b</a>\n"
830+
+ " </element>\n"
831+
+ "</root>",
832+
U.jsonToXml(
833+
"{\n"
834+
+ " \"root\": [\n"
835+
+ " {\n"
836+
+ " \"a\": \"b\"\n"
837+
+ " }\n"
838+
+ " ]\n"
839+
+ "}",
840+
U.Mode.FORCE_ADD_ROOT_JSON_TO_XML));
841+
}
842+
791843
@Test
792844
public void updateMapKey() {
793845
Map<String, Object> map = U.newLinkedHashMap();

0 commit comments

Comments
 (0)