diff --git a/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLSerializer.java b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLSerializer.java index bd9769c19..176ac8cad 100755 --- a/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLSerializer.java +++ b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLSerializer.java @@ -87,13 +87,13 @@ public class JSONXMLSerializer { } else if (value instanceof JSONArray) { for (final Object val : (JSONArray) value) { if (val instanceof JSONArray) { - sb.append(wrapWithTag(toXml(val), key)); + sb.append(wrapWithTag(toXml(val, null, contentKeys), key)); } else { - sb.append(toXml(val, key)); + sb.append(toXml(val, key, contentKeys)); } } } else { - sb.append(toXml(value, key)); + sb.append(toXml(value, key, contentKeys)); } }); @@ -111,7 +111,7 @@ public class JSONXMLSerializer { // XML does not have good support for arrays. If an array // appears in a place where XML is lacking, synthesize an // element. - sb.append(toXml(val, tagName == null ? "array" : tagName)); + sb.append(toXml(val, tagName == null ? "array" : tagName, contentKeys)); } return sb.toString(); } diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI676ITTest.java b/hutool-json/src/test/java/cn/hutool/json/IssueI676ITTest.java new file mode 100755 index 000000000..71b20d5e0 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI676ITTest.java @@ -0,0 +1,19 @@ +package cn.hutool.json; + +import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.util.XmlUtil; +import cn.hutool.json.xml.JSONXMLSerializer; +import org.junit.Assert; +import org.junit.Test; + +import javax.xml.xpath.XPathConstants; + +public class IssueI676ITTest { + @Test + public void parseXMLTest() { + final JSONObject jsonObject = JSONUtil.parseObj(ResourceUtil.readUtf8Str("issueI676IT.json")); + final String xmlStr = JSONXMLSerializer.toXml(jsonObject, null, (String) null); + final String content = String.valueOf(XmlUtil.getByXPath("/page/orderItems[1]/content", XmlUtil.readXML(xmlStr), XPathConstants.STRING)); + Assert.assertEquals(content, "bar1"); + } +} diff --git a/hutool-json/src/test/resources/IssueI676IT.json b/hutool-json/src/test/resources/IssueI676IT.json new file mode 100755 index 000000000..7102d5c64 --- /dev/null +++ b/hutool-json/src/test/resources/IssueI676IT.json @@ -0,0 +1,19 @@ +{ + "page": { + "pageSize": 33, + "currentPage": 81, + "totalSize": 49, + "orderItems": [ + { + "asc": true, + "columnName": "foo", + "content": "bar1" + }, + { + "asc": false, + "columnName": "foo", + "content": "bar2" + } + ] + } +}