Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/main/java/com/github/underscore/U.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ public class U<T> extends Underscore<T> {
private static final String SELF_CLOSING = "-self-closing";
private static final String NIL_KEY = "-nil";
private static final String OMIT_XML_DECL = "#omit-xml-declaration";
private static final String YES = "yes";
private static final java.util.regex.Pattern RE_WORDS =
java.util.regex.Pattern.compile(
UPPER
Expand Down Expand Up @@ -2701,6 +2702,20 @@ public static String jsonToXml(String json) {
return jsonToXml(json, Xml.XmlStringBuilder.Step.TWO_SPACES, null, null);
}

@SuppressWarnings("unchecked")
public static String jsonToXmlMinimum(String json, Xml.XmlStringBuilder.Step identStep) {
Object object = Json.fromJson(json);
if (object instanceof Map) {
((Map<String, Object>) object).put(OMIT_XML_DECL, YES);
return Xml.toXml(replaceNumberAndBooleanWithString((Map) object), identStep);
}
return Xml.toXmlWithoutRoot((List) object, identStep);
}

public static String jsonToXmlMinimum(String json) {
return jsonToXmlMinimum(json, Xml.XmlStringBuilder.Step.TWO_SPACES);
}

@SuppressWarnings("unchecked")
public static String xmlToJson(
String xml, Json.JsonStringBuilder.Step identStep, XmlToJsonMode mode) {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/github/underscore/Xml.java
Original file line number Diff line number Diff line change
Expand Up @@ -1118,6 +1118,12 @@ public static String toXml(Collection collection, XmlStringBuilder.Step identSte
return builder.toString();
}

public static String toXmlWithoutRoot(Collection collection, XmlStringBuilder.Step identStep) {
final XmlStringBuilder builder = new XmlStringBuilderWithoutHeader(identStep, 0);
writeArray(collection, builder, ARRAY_TRUE);
return builder.toString();
}

public static String toXml(Collection collection) {
return toXml(collection, XmlStringBuilder.Step.TWO_SPACES);
}
Expand Down
19 changes: 19 additions & 0 deletions src/test/java/com/github/underscore/LodashTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1343,6 +1343,25 @@ void jsonToXml() {
U.jsonToXml("{\"a\" : {\n \"b\" : \"v1\" }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
}

@Test
void jsonToXmlMinimum() {
assertEquals("<a></a>",
U.jsonToXmlMinimum("{\n \"a\": {\n }\n}"));
assertEquals("<a></a>",
U.jsonToXmlMinimum("{\n \"a\": {\n }\n}", Xml.XmlStringBuilder.Step.TWO_SPACES));
assertEquals("<root empty-array=\"true\"></root>",
U.jsonToXmlMinimum("[]"));
assertEquals("<root>\n"
+ " <a>\n"
+ " <b>1</b>\n"
+ " </a>\n"
+ " <c>v1</c>\n"
+ " <c>v2</c>\n"
+ " <c>v3</c>\n"
+ "</root>",
U.jsonToXmlMinimum("{\"a\" : {\n \"b\" : 1 }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
}

@Test
void getTextType() {
assertEquals(
Expand Down
Loading