Skip to content

Commit 45dead0

Browse files
authored
Added method U.xmlToJsonMinimum(xml)
1 parent 5cf3fa1 commit 45dead0

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public class U<T> extends Underscore<T> {
9494
private static final String LOWER = "[a-z\\xdf-\\xf6\\xf8-\\xff]+";
9595
private static final String SELF_CLOSING = "-self-closing";
9696
private static final String NIL_KEY = "-nil";
97+
private static final String OMIT_XML_DECL = "#omit-xml-declaration";
9798
private static final java.util.regex.Pattern RE_WORDS =
9899
java.util.regex.Pattern.compile(
99100
UPPER
@@ -2749,6 +2750,20 @@ public static String xmlToJson(String xml) {
27492750
return xmlToJson(xml, Json.JsonStringBuilder.Step.TWO_SPACES, null);
27502751
}
27512752

2753+
@SuppressWarnings("unchecked")
2754+
public static String xmlToJsonMinimum(String xml, Json.JsonStringBuilder.Step identStep) {
2755+
Object object = Xml.fromXml(xml);
2756+
if (object instanceof Map) {
2757+
((Map) object).remove(OMIT_XML_DECL);
2758+
return Json.toJson(replaceSelfClosingWithEmpty((Map) object), identStep);
2759+
}
2760+
return Json.toJson((List) object, identStep);
2761+
}
2762+
2763+
public static String xmlToJsonMinimum(String xml) {
2764+
return xmlToJsonMinimum(xml, Json.JsonStringBuilder.Step.TWO_SPACES);
2765+
}
2766+
27522767
public static String xmlToJson(String xml, Json.JsonStringBuilder.Step identStep) {
27532768
return xmlToJson(xml, identStep, null);
27542769
}
@@ -2885,7 +2900,7 @@ public static Map<String, Object> removeMinusesAndConvertNumbers(Map<String, Obj
28852900
newKey = entry.getKey();
28862901
}
28872902
if (!entry.getKey().equals(SELF_CLOSING)
2888-
&& !entry.getKey().equals("#omit-xml-declaration")) {
2903+
&& !entry.getKey().equals(OMIT_XML_DECL)) {
28892904
outMap.put(newKey, makeObject(entry.getValue()));
28902905
}
28912906
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,31 @@ void xmpToJson4() {
10221022
+ "</z:catalog>"));
10231023
}
10241024

1025+
@Test
1026+
void xmlToJsonMinimum() {
1027+
assertEquals(
1028+
"{\n"
1029+
+ " \"root\": {\n"
1030+
+ " \"element\": [\n"
1031+
+ " \"1\",\n"
1032+
+ " \"2\"\n"
1033+
+ " ],\n"
1034+
+ " \"a\": \"\"\n"
1035+
+ " }\n"
1036+
+ "}",
1037+
U.xmlToJsonMinimum("<root><element>1</element><element>2</element><a/></root>"));
1038+
assertEquals(
1039+
"[\n"
1040+
+ " \"a\",\n"
1041+
+ " \"b\"\n"
1042+
+ "]",
1043+
U.xmlToJsonMinimum("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1044+
+ "<root>\n"
1045+
+ " <element>a</element>\n"
1046+
+ " <element>b</element>\n"
1047+
+ "</root>"));
1048+
}
1049+
10251050
@Test
10261051
void xmlOrJsonToJson() {
10271052
assertEquals(

0 commit comments

Comments
 (0)