diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java index ef1f511f8..6e5eff067 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java @@ -6,7 +6,11 @@ import cn.hutool.core.lang.mutable.MutableEntry; import java.util.function.Predicate; /** - * JSON字符串解析器 + * JSON字符串解析器,实现: + *
+ * Java对象 <----> JSON对象 <----> JSON字符串 + *+ * + * * @author looly * */ -package cn.hutool.json; \ No newline at end of file +package cn.hutool.json; diff --git a/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLParser.java b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLParser.java index d50a4bef7..6e28db6e1 100644 --- a/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLParser.java +++ b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLParser.java @@ -4,8 +4,6 @@ import cn.hutool.core.text.StrUtil; import cn.hutool.json.InternalJSONUtil; import cn.hutool.json.JSONException; import cn.hutool.json.JSONObject; -import cn.hutool.json.XML; -import cn.hutool.json.XMLTokener; /** * XML解析器,将XML解析为JSON对象 @@ -50,7 +48,7 @@ public class JSONXMLParser { token = x.nextToken(); - if (token == XML.BANG) { + if (token == JSONXMLUtil.BANG) { c = x.next(); if (c == '-') { if (x.next() == '-') { @@ -76,19 +74,19 @@ public class JSONXMLParser { token = x.nextMeta(); if (token == null) { throw x.syntaxError("Missing '>' after ' 0); return false; - } else if (token == XML.QUEST) { + } else if (token == JSONXMLUtil.QUEST) { // x.skipPast("?>"); return false; - } else if (token == XML.SLASH) { + } else if (token == JSONXMLUtil.SLASH) { // Close tag @@ -99,7 +97,7 @@ public class JSONXMLParser { if (!token.equals(name)) { throw x.syntaxError("Mismatched " + name + " and " + token); } - if (x.nextToken() != XML.GT) { + if (x.nextToken() != JSONXMLUtil.GT) { throw x.syntaxError("Misshaped close tag"); } return true; @@ -122,7 +120,7 @@ public class JSONXMLParser { if (token instanceof String) { string = (String) token; token = x.nextToken(); - if (token == XML.EQ) { + if (token == JSONXMLUtil.EQ) { token = x.nextToken(); if (!(token instanceof String)) { throw x.syntaxError("Missing value"); @@ -133,9 +131,9 @@ public class JSONXMLParser { jsonobject.append(string, ""); } - } else if (token == XML.SLASH) { + } else if (token == JSONXMLUtil.SLASH) { // Empty tag <.../> - if (x.nextToken() != XML.GT) { + if (x.nextToken() != JSONXMLUtil.GT) { throw x.syntaxError("Misshaped tag"); } if (jsonobject.size() > 0) { @@ -145,7 +143,7 @@ public class JSONXMLParser { } return false; - } else if (token == XML.GT) { + } else if (token == JSONXMLUtil.GT) { // Content, between <...> and for (; ; ) { token = x.nextContent(); @@ -160,7 +158,7 @@ public class JSONXMLParser { jsonobject.append("content", keepStrings ? token : InternalJSONUtil.stringToValue(string)); } - } else if (token == XML.LT) { + } else if (token == JSONXMLUtil.LT) { // Nested element if (parse(x, jsonobject, tagName, keepStrings)) { if (jsonobject.size() == 0) { diff --git a/hutool-json/src/main/java/cn/hutool/json/XML.java b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLUtil.java similarity index 97% rename from hutool-json/src/main/java/cn/hutool/json/XML.java rename to hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLUtil.java index a60dccb70..f328fc31f 100644 --- a/hutool-json/src/main/java/cn/hutool/json/XML.java +++ b/hutool-json/src/main/java/cn/hutool/json/xml/JSONXMLUtil.java @@ -1,8 +1,8 @@ -package cn.hutool.json; +package cn.hutool.json.xml; import cn.hutool.core.util.CharUtil; -import cn.hutool.json.xml.JSONXMLParser; -import cn.hutool.json.xml.JSONXMLSerializer; +import cn.hutool.json.JSONException; +import cn.hutool.json.JSONObject; /** * 提供静态方法在XML和JSONObject之间转换 @@ -11,7 +11,7 @@ import cn.hutool.json.xml.JSONXMLSerializer; * @see JSONXMLParser * @see JSONXMLSerializer */ -public class XML { +public class JSONXMLUtil { /** * The Character '&'. diff --git a/hutool-json/src/main/java/cn/hutool/json/XMLTokener.java b/hutool-json/src/main/java/cn/hutool/json/xml/XMLTokener.java similarity index 91% rename from hutool-json/src/main/java/cn/hutool/json/XMLTokener.java rename to hutool-json/src/main/java/cn/hutool/json/xml/XMLTokener.java index 2c940630d..548ac934f 100644 --- a/hutool-json/src/main/java/cn/hutool/json/XMLTokener.java +++ b/hutool-json/src/main/java/cn/hutool/json/xml/XMLTokener.java @@ -1,4 +1,8 @@ -package cn.hutool.json; +package cn.hutool.json.xml; + +import cn.hutool.json.JSONConfig; +import cn.hutool.json.JSONException; +import cn.hutool.json.JSONTokener; /** * XML分析器,继承自JSONTokener,提供XML的语法分析 @@ -15,11 +19,11 @@ public class XMLTokener extends JSONTokener { static { entity = new java.util.HashMap<>(8); - entity.put("amp", XML.AMP); - entity.put("apos", XML.APOS); - entity.put("gt", XML.GT); - entity.put("lt", XML.LT); - entity.put("quot", XML.QUOT); + entity.put("amp", JSONXMLUtil.AMP); + entity.put("apos", JSONXMLUtil.APOS); + entity.put("gt", JSONXMLUtil.GT); + entity.put("lt", JSONXMLUtil.LT); + entity.put("quot", JSONXMLUtil.QUOT); } /** @@ -73,7 +77,7 @@ public class XMLTokener extends JSONTokener { return null; } if (c == '<') { - return XML.LT; + return JSONXMLUtil.LT; } sb = new StringBuilder(); for (; ; ) { @@ -130,17 +134,17 @@ public class XMLTokener extends JSONTokener { case 0: throw syntaxError("Misshaped meta tag"); case '<': - return XML.LT; + return JSONXMLUtil.LT; case '>': - return XML.GT; + return JSONXMLUtil.GT; case '/': - return XML.SLASH; + return JSONXMLUtil.SLASH; case '=': - return XML.EQ; + return JSONXMLUtil.EQ; case '!': - return XML.BANG; + return JSONXMLUtil.BANG; case '?': - return XML.QUEST; + return JSONXMLUtil.QUEST; case '"': case '\'': q = c; @@ -197,15 +201,15 @@ public class XMLTokener extends JSONTokener { case '<': throw syntaxError("Misplaced '<'"); case '>': - return XML.GT; + return JSONXMLUtil.GT; case '/': - return XML.SLASH; + return JSONXMLUtil.SLASH; case '=': - return XML.EQ; + return JSONXMLUtil.EQ; case '!': - return XML.BANG; + return JSONXMLUtil.BANG; case '?': - return XML.QUEST; + return JSONXMLUtil.QUEST; // Quoted string diff --git a/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java b/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java index a539982ad..854f76c7d 100644 --- a/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java @@ -2,7 +2,6 @@ package cn.hutool.json.xml; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.hutool.json.XML; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; import org.junit.Assert; @@ -22,11 +21,11 @@ public class XMLTest { @Test public void escapeTest(){ final String xml = "•"; - final JSONObject jsonObject = XML.toJSONObject(xml); + final JSONObject jsonObject = JSONXMLUtil.toJSONObject(xml); Assert.assertEquals("{\"a\":\"•\"}", jsonObject.toString()); - final String xml2 = XML.toXml(JSONUtil.parseObj(jsonObject)); + final String xml2 = JSONXMLUtil.toXml(JSONUtil.parseObj(jsonObject)); Assert.assertEquals(xml, xml2); } @@ -34,10 +33,10 @@ public class XMLTest { public void xmlContentTest(){ final JSONObject jsonObject = JSONUtil.createObj().set("content","123456"); - String xml = XML.toXml(jsonObject); + String xml = JSONXMLUtil.toXml(jsonObject); Assert.assertEquals("123456", xml); - xml = XML.toXml(jsonObject, null, new String[0]); + xml = JSONXMLUtil.toXml(jsonObject, null, new String[0]); Assert.assertEquals("