diff --git a/src/main/java/org/json/XML.java b/src/main/java/org/json/XML.java index 45384d3..d78ae1f 100644 --- a/src/main/java/org/json/XML.java +++ b/src/main/java/org/json/XML.java @@ -415,7 +415,7 @@ public class XML { if (parse(x, jsonObject, tagName, config)) { if (config.getForceList().contains(tagName)) { if (jsonObject.length() == 0) { - context.append(tagName, ""); + context.put(tagName, new JSONArray()); } else if (jsonObject.length() == 1 && jsonObject.opt(config.getcDataTagName()) != null) { context.append(tagName, jsonObject.opt(config.getcDataTagName())); diff --git a/src/test/java/org/json/junit/XMLConfigurationTest.java b/src/test/java/org/json/junit/XMLConfigurationTest.java index 47c588c..3008024 100755 --- a/src/test/java/org/json/junit/XMLConfigurationTest.java +++ b/src/test/java/org/json/junit/XMLConfigurationTest.java @@ -919,7 +919,8 @@ public class XMLConfigurationTest { " \n"+ ""; - String expectedStr = "{\"addresses\":[{\"address\":{\"name\":\"Sherlock Holmes\"}}]}"; + String expectedStr = + "{\"addresses\":[{\"address\":{\"name\":\"Sherlock Holmes\"}}]}"; Set forceList = new HashSet(); forceList.add("addresses"); @@ -949,18 +950,18 @@ public class XMLConfigurationTest { ""; String expectedStr = - "{"+ - "\"servers\": ["+ - "{"+ - "\"server\": {"+ - "\"name\": \"host1\","+ - "\"os\": \"Linux\","+ - "\"interfaces\": ["+ - "{"+ - "\"interface\": {"+ - "\"name\": \"em0\","+ - "\"ip_address\": \"10.0.0.1\""+ - "}}]}}]}"; + "{"+ + "\"servers\": ["+ + "{"+ + "\"server\": {"+ + "\"name\": \"host1\","+ + "\"os\": \"Linux\","+ + "\"interfaces\": ["+ + "{"+ + "\"interface\": {"+ + "\"name\": \"em0\","+ + "\"ip_address\": \"10.0.0.1\""+ + "}}]}}]}"; Set forceList = new HashSet(); forceList.add("servers"); @@ -974,7 +975,25 @@ public class XMLConfigurationTest { Util.compareActualVsExpectedJsonObjects(jsonObject, expetedJsonObject); } - + @Test + public void testEmptyForceList() { + String xmlStr = + ""; + + String expectedStr = + "{\"addresses\":[]}"; + + Set forceList = new HashSet(); + forceList.add("addresses"); + + XMLParserConfiguration config = + new XMLParserConfiguration() + .withForceList(forceList); + JSONObject jsonObject = XML.toJSONObject(xmlStr, config); + JSONObject expetedJsonObject = new JSONObject(expectedStr); + + Util.compareActualVsExpectedJsonObjects(jsonObject, expetedJsonObject); + } /** * Convenience method, given an input string and expected result,