Skip to content

Commit 7ca7fd2

Browse files
authored
Added method U.jsonToXmlMinimum(json, step)
1 parent 5debd12 commit 7ca7fd2

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

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

+15
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public class U<T> extends Underscore<T> {
9595
private static final String SELF_CLOSING = "-self-closing";
9696
private static final String NIL_KEY = "-nil";
9797
private static final String OMIT_XML_DECL = "#omit-xml-declaration";
98+
private static final String YES = "yes";
9899
private static final java.util.regex.Pattern RE_WORDS =
99100
java.util.regex.Pattern.compile(
100101
UPPER
@@ -2701,6 +2702,20 @@ public static String jsonToXml(String json) {
27012702
return jsonToXml(json, Xml.XmlStringBuilder.Step.TWO_SPACES, null, null);
27022703
}
27032704

2705+
@SuppressWarnings("unchecked")
2706+
public static String jsonToXmlMinimum(String json, Xml.XmlStringBuilder.Step identStep) {
2707+
Object object = Json.fromJson(json);
2708+
if (object instanceof Map) {
2709+
((Map<String, Object>) object).put(OMIT_XML_DECL, YES);
2710+
return Xml.toXml(replaceNumberAndBooleanWithString((Map) object), identStep);
2711+
}
2712+
return Xml.toXmlWithoutRoot((List) object, identStep);
2713+
}
2714+
2715+
public static String jsonToXmlMinimum(String json) {
2716+
return jsonToXmlMinimum(json, Xml.XmlStringBuilder.Step.TWO_SPACES);
2717+
}
2718+
27042719
@SuppressWarnings("unchecked")
27052720
public static String xmlToJson(
27062721
String xml, Json.JsonStringBuilder.Step identStep, XmlToJsonMode mode) {

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

+6
Original file line numberDiff line numberDiff line change
@@ -1118,6 +1118,12 @@ public static String toXml(Collection collection, XmlStringBuilder.Step identSte
11181118
return builder.toString();
11191119
}
11201120

1121+
public static String toXmlWithoutRoot(Collection collection, XmlStringBuilder.Step identStep) {
1122+
final XmlStringBuilder builder = new XmlStringBuilderWithoutHeader(identStep, 0);
1123+
writeArray(collection, builder, ARRAY_TRUE);
1124+
return builder.toString();
1125+
}
1126+
11211127
public static String toXml(Collection collection) {
11221128
return toXml(collection, XmlStringBuilder.Step.TWO_SPACES);
11231129
}

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

+19
Original file line numberDiff line numberDiff line change
@@ -1343,6 +1343,25 @@ void jsonToXml() {
13431343
U.jsonToXml("{\"a\" : {\n \"b\" : \"v1\" }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
13441344
}
13451345

1346+
@Test
1347+
void jsonToXmlMinimum() {
1348+
assertEquals("<a></a>",
1349+
U.jsonToXmlMinimum("{\n \"a\": {\n }\n}"));
1350+
assertEquals("<a></a>",
1351+
U.jsonToXmlMinimum("{\n \"a\": {\n }\n}", Xml.XmlStringBuilder.Step.TWO_SPACES));
1352+
assertEquals("<root empty-array=\"true\"></root>",
1353+
U.jsonToXmlMinimum("[]"));
1354+
assertEquals("<root>\n"
1355+
+ " <a>\n"
1356+
+ " <b>1</b>\n"
1357+
+ " </a>\n"
1358+
+ " <c>v1</c>\n"
1359+
+ " <c>v2</c>\n"
1360+
+ " <c>v3</c>\n"
1361+
+ "</root>",
1362+
U.jsonToXmlMinimum("{\"a\" : {\n \"b\" : 1 }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
1363+
}
1364+
13461365
@Test
13471366
void getTextType() {
13481367
assertEquals(

0 commit comments

Comments
 (0)