Skip to content

Commit e030564

Browse files
authored
Added methods U.mergeXmlsOrJsonsToJson(xmlsOrJsons) and U.mergeXmlsOrJsonsToXml(xmlsOrJsons)
1 parent 8da8daa commit e030564

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

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

+42
Original file line numberDiff line numberDiff line change
@@ -2798,6 +2798,48 @@ public static String xmlOrJsonToJson(String xmlOrJson) {
27982798
return xmlOrJsonToJson(xmlOrJson, Json.JsonStringBuilder.Step.TWO_SPACES);
27992799
}
28002800

2801+
public static String mergeXmlsOrJsonsToJson(List<String> xmlsOrJsons, Json.JsonStringBuilder.Step identStep) {
2802+
Map<String, Object> resultJsonMap = new LinkedHashMap<>();
2803+
for (String xmlOrJsonToJson : xmlsOrJsons) {
2804+
TextType textType = getTextType(xmlOrJsonToJson);
2805+
final Map<String, Object> jsonOrXmlMap;
2806+
if (textType == TextType.JSON) {
2807+
jsonOrXmlMap = fromJsonMap(xmlOrJsonToJson);
2808+
} else if (textType == TextType.XML) {
2809+
jsonOrXmlMap = fromXmlMap(xmlOrJsonToJson);
2810+
} else {
2811+
continue;
2812+
}
2813+
resultJsonMap = U.update(resultJsonMap, jsonOrXmlMap);
2814+
}
2815+
return resultJsonMap.isEmpty() ? "" : Json.toJson(resultJsonMap, identStep);
2816+
}
2817+
2818+
public static String mergeXmlsOrJsonsToJson(List<String> xmlsOrJsons) {
2819+
return mergeXmlsOrJsonsToJson(xmlsOrJsons, Json.JsonStringBuilder.Step.TWO_SPACES);
2820+
}
2821+
2822+
public static String mergeXmlsOrJsonsToXml(List<String> xmlsOrJsons, Xml.XmlStringBuilder.Step identStep) {
2823+
Map<String, Object> resultXmlMap = new LinkedHashMap<>();
2824+
for (String xmlOrJsonToXml : xmlsOrJsons) {
2825+
TextType textType = getTextType(xmlOrJsonToXml);
2826+
final Map<String, Object> jsonOrXmlMap;
2827+
if (textType == TextType.JSON) {
2828+
jsonOrXmlMap = fromJsonMap(xmlOrJsonToXml);
2829+
} else if (textType == TextType.XML) {
2830+
jsonOrXmlMap = fromXmlMap(xmlOrJsonToXml);
2831+
} else {
2832+
continue;
2833+
}
2834+
resultXmlMap = U.update(resultXmlMap, jsonOrXmlMap);
2835+
}
2836+
return resultXmlMap.isEmpty() ? "" : Xml.toXml(resultXmlMap, identStep);
2837+
}
2838+
2839+
public static String mergeXmlsOrJsonsToXml(List<String> xmlsOrJsons) {
2840+
return mergeXmlsOrJsonsToXml(xmlsOrJsons, Xml.XmlStringBuilder.Step.TWO_SPACES);
2841+
}
2842+
28012843
@SuppressWarnings("unchecked")
28022844
private static String getJsonString(Json.JsonStringBuilder.Step identStep, Object object) {
28032845
final String result;

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

+60
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,66 @@ void xmlOrJsonToXml() {
11061106
assertEquals("", U.xmlOrJsonToXml(""));
11071107
}
11081108

1109+
@Test
1110+
void mergeXmlsOrJsonsToJson() {
1111+
assertEquals(
1112+
"{\n"
1113+
+ " \"a\": {\n"
1114+
+ " \"-self-closing\": \"true\"\n"
1115+
+ " },\n"
1116+
+ " \"#omit-xml-declaration\": \"yes\"\n"
1117+
+ "}",
1118+
U.mergeXmlsOrJsonsToJson(List.of("<a/>")));
1119+
assertEquals(
1120+
"{\n"
1121+
+ " \"a\": {\n"
1122+
+ " \"-self-closing\": \"true\"\n"
1123+
+ " },\n"
1124+
+ " \"#omit-xml-declaration\": \"yes\",\n"
1125+
+ " \"b\": {\n"
1126+
+ " \"-self-closing\": \"true\"\n"
1127+
+ " }\n"
1128+
+ "}",
1129+
U.mergeXmlsOrJsonsToJson(List.of("<a/>", "<b/>")));
1130+
assertEquals(
1131+
"{\n"
1132+
+ " \"value\": [\n"
1133+
+ " ]\n"
1134+
+ "}",
1135+
U.mergeXmlsOrJsonsToJson(
1136+
List.of("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1137+
+ "<root empty-array=\"true\"></root>")));
1138+
assertEquals("{\n \"a\": 1\n}", U.mergeXmlsOrJsonsToJson(List.of("{\"a\":1}")));
1139+
assertEquals("{\n"
1140+
+ " \"value\": [\n"
1141+
+ " ]\n"
1142+
+ "}", U.mergeXmlsOrJsonsToJson(List.of("[]")));
1143+
assertEquals("", U.mergeXmlsOrJsonsToJson(List.of("")));
1144+
}
1145+
1146+
@Test
1147+
void mergeXmlsOrJsonsToXml() {
1148+
assertEquals("<a/>", U.mergeXmlsOrJsonsToXml(List.of("<a/>")));
1149+
assertEquals("<root>\n"
1150+
+ " <a/>\n"
1151+
+ " <b/>\n"
1152+
+ "</root>", U.mergeXmlsOrJsonsToXml(List.of("<a/>", "<b/>")));
1153+
assertEquals(
1154+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1155+
+ "<value empty-array=\"true\"></value>",
1156+
U.mergeXmlsOrJsonsToXml(
1157+
List.of("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1158+
+ "<root empty-array=\"true\"></root>")));
1159+
assertEquals(
1160+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a number=\"true\">1</a>",
1161+
U.mergeXmlsOrJsonsToXml(List.of("{\"a\":1}")));
1162+
assertEquals(
1163+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1164+
+ "<value empty-array=\"true\"></value>",
1165+
U.mergeXmlsOrJsonsToXml(List.of("[]")));
1166+
assertEquals("", U.mergeXmlsOrJsonsToXml(List.of("")));
1167+
}
1168+
11091169
@Test
11101170
void removeMapKey() {
11111171
Map<String, Object> map = new LinkedHashMap<>();

0 commit comments

Comments
 (0)