diff --git a/src/main/java/org/json/XML.java b/src/main/java/org/json/XML.java index 4bf4759..3eb948c 100644 --- a/src/main/java/org/json/XML.java +++ b/src/main/java/org/json/XML.java @@ -428,6 +428,9 @@ public class XML { config.isKeepNumberAsString() ? ((String) token) : obj); + } else if (obj == JSONObject.NULL) { + jsonObject.accumulate(config.getcDataTagName(), + config.isKeepStrings() ? ((String) token) : obj); } else { jsonObject.accumulate(config.getcDataTagName(), stringToValue((String) token)); } diff --git a/src/test/java/org/json/junit/XMLConfigurationTest.java b/src/test/java/org/json/junit/XMLConfigurationTest.java index 938c7c8..4ad06c1 100755 --- a/src/test/java/org/json/junit/XMLConfigurationTest.java +++ b/src/test/java/org/json/junit/XMLConfigurationTest.java @@ -794,6 +794,18 @@ public class XMLConfigurationTest { Util.compareActualVsExpectedJsonObjects(actualJsonOutput,expected); } + /** + * null is "null" when keepStrings == true + */ + @Test + public void testToJSONArray_jsonOutput_null_withKeepString() { + final String originalXml = "011000null"; + final JSONObject expected = new JSONObject("{\"root\":{\"item\":{\"id\":\"01\"},\"id\":[\"01\",\"1\",\"00\",\"0\"],\"title\":\"null\"}}"); + final JSONObject actualJsonOutput = XML.toJSONObject(originalXml, + new XMLParserConfiguration().withKeepStrings(true)); + Util.compareActualVsExpectedJsonObjects(actualJsonOutput,expected); + } + /** * Test keepStrings behavior when setting keepBooleanAsString, keepNumberAsString */