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 <[email protected]>
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) {