From a0f90b776d4660083e8844e276f80ff92bce8d5d Mon Sep 17 00:00:00 2001 From: Zach Date: Fri, 19 Nov 2021 20:46:15 -0600 Subject: [PATCH] Passed simple test --- src/main/java/org/json/XML.java | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/json/XML.java b/src/main/java/org/json/XML.java index b7f0c8b..45384d3 100644 --- a/src/main/java/org/json/XML.java +++ b/src/main/java/org/json/XML.java @@ -413,14 +413,26 @@ public class XML { } else if (token == LT) { // Nested element if (parse(x, jsonObject, tagName, config)) { - if (jsonObject.length() == 0) { - context.accumulate(tagName, ""); - } else if (jsonObject.length() == 1 - && jsonObject.opt(config.getcDataTagName()) != null) { - context.accumulate(tagName, jsonObject.opt(config.getcDataTagName())); + if (config.getForceList().contains(tagName)) { + if (jsonObject.length() == 0) { + context.append(tagName, ""); + } else if (jsonObject.length() == 1 + && jsonObject.opt(config.getcDataTagName()) != null) { + context.append(tagName, jsonObject.opt(config.getcDataTagName())); + } else { + context.append(tagName, jsonObject); + } } else { - context.accumulate(tagName, jsonObject); + if (jsonObject.length() == 0) { + context.accumulate(tagName, ""); + } else if (jsonObject.length() == 1 + && jsonObject.opt(config.getcDataTagName()) != null) { + context.accumulate(tagName, jsonObject.opt(config.getcDataTagName())); + } else { + context.accumulate(tagName, jsonObject); + } } + return false; } }