diff --git a/xml-2/pom.xml b/xml-2/pom.xml index c4882b0a53..6b25d66b6a 100644 --- a/xml-2/pom.xml +++ b/xml-2/pom.xml @@ -26,6 +26,26 @@ ${junit-jupiter.version} test + + org.json + json + ${json.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + + + com.github.javadev + underscore + ${underscore.version} + @@ -51,6 +71,9 @@ 2.1.3 + 2.14.1 + 20230227 + 1.89 \ No newline at end of file diff --git a/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java new file mode 100644 index 0000000000..6c8486f14b --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java @@ -0,0 +1,77 @@ +package com.baeldung.xml.json2xml; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; +import com.github.underscore.U; +import org.json.JSONObject; +import org.json.XML; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class JsonToXmlUnitTest { + + @Test + public void givenJsonString_whenConvertToXMLUsingJsonJava_thenConverted() { + String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; + JSONObject jsonObject = new JSONObject(jsonString); + String xmlString = XML.toString(jsonObject); + Assertions.assertEquals("
New YorkWall Street
John20", xmlString); + } + + @Test + public void givenJsonString_whenConvertToXMLUsingJackson_thenConverted() throws JsonProcessingException { + String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(jsonString); + String xmlString = new XmlMapper().writeValueAsString(jsonNode); + Assertions.assertEquals("John20
Wall StreetNew York
", xmlString); + } + + @Test + public void givenJsonString_whenConvertToXMLUsingJacksonWithXMLDeclarationAndRoot_thenConverted() throws JsonProcessingException { + String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(jsonString); + XmlMapper xmlMapper = new XmlMapper(); + xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true); + xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); + xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true); + String xmlString = xmlMapper.writer().withRootName("root").withDefaultPrettyPrinter().writeValueAsString(jsonNode); + Assertions.assertEquals("\n" + + "\n" + + " John\n" + + " 20\n" + + "
\n" + + " Wall Street\n" + + " New York\n" + + "
\n" + + "
\n", xmlString); + } + + @Test + public void givenJsonString_whenConvertToXMLUsingUnderscoreJava_thenConverted() { + String jsonString = "{\"name\":\"John\", \"age\":20}"; + String xmlString = U.jsonToXml(jsonString); + Assertions.assertEquals("\n" + + "\n" + + " John\n" + + " 20\n" + + "", xmlString); + } + + @Test + public void givenJsonString_whenConvertToXMLUsingUnderscoreJavaWithoutAttributes_thenConverted() { + String jsonString = "{\"name\":\"John\", \"age\":20}"; + String xmlString = U.jsonToXml(jsonString, U.JsonToXmlMode.REMOVE_ATTRIBUTES); + Assertions.assertEquals("\n" + + "\n" + + " John\n" + + " 20\n" + + "", xmlString); + } +} +