From a09cd9adb5872be6d6bf0a13a42aa77fd1920e99 Mon Sep 17 00:00:00 2001 From: agapple Date: Mon, 19 Apr 2021 11:28:45 +0800 Subject: [PATCH] fixed issue #3110 , json escapse --- .../tddl/dbsync/binlog/JsonConversion.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/JsonConversion.java b/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/JsonConversion.java index 5639cac1..f04daa1d 100644 --- a/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/JsonConversion.java +++ b/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/JsonConversion.java @@ -420,11 +420,27 @@ public class JsonConversion { for (int i = 0; i < endIndex; ++i) { char c = data.charAt(i); if (c == '"') { - sb.append('\\'); + sb.append("\\\""); + } else if (c == '\n') { + sb.append("\\n"); + } else if (c == '\r') { + sb.append("\\r"); } else if (c == '\\') { - sb.append("\\"); + sb.append("\\\\"); + } else if (c == '\t') { + sb.append("\\t"); + } else if (c < 16) { + sb.append("\\u000"); + sb.append(Integer.toHexString(c)); + } else if (c < 32) { + sb.append("\\u00"); + sb.append(Integer.toHexString(c)); + } else if (c >= 0x7f && c <= 0xA0) { + sb.append("\\u00"); + sb.append(Integer.toHexString(c)); + } else { + sb.append(c); } - sb.append(c); } return sb; }