From f245a721f6f32f6ce81d2b79d969226e193e25ca Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 28 Sep 2023 16:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DJSONStrFormatter:format?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=AF=B9=E4=BA=8E=E8=BD=AC=E4=B9=89=E7=AC=A6?= =?UTF-8?q?=E5=8F=B7=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../java/cn/hutool/json/JSONStrFormatter.java | 8 +++++--- .../java/cn/hutool/json/IssueI84V6ITest.java | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 hutool-json/src/test/java/cn/hutool/json/IssueI84V6ITest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 77cc9c955..96a1437a5 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.23(2023-09-25) +# 5.8.23(2023-09-28) ### 🐣新特性 * 【json 】 改进TemporalAccessorSerializer支持dayOfMonth和month枚举名(issue#I82AM8@Gitee) @@ -12,6 +12,7 @@ ### 🐞Bug修复 * 【cron 】 修复Cron表达式range解析错误问题(issue#I82CSH@Gitee) * 【core 】 修复VersionComparator在极端数据排序时候违反了自反性问题(issue#I81N3H@Gitee) +* 【json 】 修复JSONStrFormatter:format函数对于转义符号处理逻辑错误问题(issue#I84V6I@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.22(2023-09-13) diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONStrFormatter.java b/hutool-json/src/main/java/cn/hutool/json/JSONStrFormatter.java index 5181401be..8b033c17d 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONStrFormatter.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONStrFormatter.java @@ -42,10 +42,12 @@ public class JSONStrFormatter { if (null == wrapChar) { //字符串模式开始 wrapChar = key; - } else if (isEscapeMode) { - //在字符串模式下的转义 - isEscapeMode = false; } else if (wrapChar.equals(key)) { + if (isEscapeMode) { + //字符串模式下,遇到结束符号,也同时结束转义 + isEscapeMode = false; + } + //字符串包装结束 wrapChar = null; } diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI84V6ITest.java b/hutool-json/src/test/java/cn/hutool/json/IssueI84V6ITest.java new file mode 100644 index 000000000..963d10539 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI84V6ITest.java @@ -0,0 +1,18 @@ +package cn.hutool.json; + +import org.junit.Assert; +import org.junit.Test; + +public class IssueI84V6ITest { + @Test + public void formatTest() { + final String a1 = "{'x':'\\n','y':','}"; + final String formatJsonStr = JSONUtil.formatJsonStr(a1); +// Console.log(formatJsonStr); + Assert.assertEquals( + "{\n" + + " 'x': '\\n',\n" + + " 'y': ','\n" + + "}", formatJsonStr); + } +}