You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ja...@apache.org on 2021/01/08 04:13:36 UTC
[flink] branch master updated: [FLINK-20773][json] Support to parse
unescaped control chars in string node
This is an automated email from the ASF dual-hosted git repository.
jark pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 51ec88b [FLINK-20773][json] Support to parse unescaped control chars in string node
51ec88b is described below
commit 51ec88bd01f5157c154fe49163ec0920f0e44663
Author: V1ncentzzZ <45...@users.noreply.github.com>
AuthorDate: Fri Jan 8 12:13:18 2021 +0800
[FLINK-20773][json] Support to parse unescaped control chars in string node
This closes #14508
---
.../apache/flink/formats/json/JsonRowDataDeserializationSchema.java | 2 ++
.../org/apache/flink/formats/json/JsonRowDataSerDeSchemaTest.java | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/JsonRowDataDeserializationSchema.java b/flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/JsonRowDataDeserializationSchema.java
index a0c4175..ebdad24 100644
--- a/flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/JsonRowDataDeserializationSchema.java
+++ b/flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/JsonRowDataDeserializationSchema.java
@@ -26,6 +26,7 @@ import org.apache.flink.table.types.logical.DecimalType;
import org.apache.flink.table.types.logical.RowType;
import org.apache.flink.table.types.logical.utils.LogicalTypeChecks;
+import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.json.JsonReadFeature;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationFeature;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper;
@@ -90,6 +91,7 @@ public class JsonRowDataDeserializationSchema implements DeserializationSchema<R
if (hasDecimalType) {
objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
}
+ objectMapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true);
}
@Override
diff --git a/flink-formats/flink-json/src/test/java/org/apache/flink/formats/json/JsonRowDataSerDeSchemaTest.java b/flink-formats/flink-json/src/test/java/org/apache/flink/formats/json/JsonRowDataSerDeSchemaTest.java
index ae3c2c2..633c9b0 100644
--- a/flink-formats/flink-json/src/test/java/org/apache/flink/formats/json/JsonRowDataSerDeSchemaTest.java
+++ b/flink-formats/flink-json/src/test/java/org/apache/flink/formats/json/JsonRowDataSerDeSchemaTest.java
@@ -700,7 +700,10 @@ public class JsonRowDataSerDeSchemaTest {
"Failed to deserialize JSON '{\"id\":\"2019-11-12T18:00:12+0800\"}'."),
TestSpec.json("{\"id\":1,\"factor\":799.929496989092949698}")
.rowType(ROW(FIELD("id", INT()), FIELD("factor", DECIMAL(38, 18))))
- .expect(Row.of(1, new BigDecimal("799.929496989092949698"))));
+ .expect(Row.of(1, new BigDecimal("799.929496989092949698"))),
+ TestSpec.json("{\"id\":\"\tstring field\"}") // test to parse control chars
+ .rowType(ROW(FIELD("id", STRING())))
+ .expect(Row.of("\tstring field")));
private static Map<String, Integer> createHashMap(
String k1, Integer v1, String k2, Integer v2) {