java - jackson 错误: unacceptable character '' (0x0) special characters are not allowed

标签 java regex jackson yaml

我正在尝试使用 MySQL 中的 jackson 解析 yaml 数据,但收到错误消息,提示存在特殊字符。我收到类似这样的错误:

com.fasterxml.jackson.databind.JsonMappingException: special characters are not allowed 
[Source: java.io.StringReader@5528a42c; line: 13, column: 68] (through reference chain: com.app.ResultContentModel["opinion"])
...
Caused by: com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.YAMLException: special characters are not allowed
 at [Source: java.io.StringReader@5528a42c; line: 13, column: 68]
...
Caused by: unacceptable character '' (0x0) special characters are not allowed
in "'reader'", position 1027

我的依赖文件如下所示:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
</dependency>
<dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>2.8.1</version>
</dependency>

我正在尝试使用正则表达式替换它:

Pattern nonASCII = Pattern.compile("[^\\x00-\\x7f]");//("[^\\x00-\\x7f]");
resultContent = Normalizer.normalize(nonASCII.matcher(resultContent).replaceAll("");
ResultContentModel rc = mapper.readValue(resultContent, ResultContentModel.class);

但是还是没成功。我该怎么办?

最佳答案

您似乎想要将任何非 ASCII + 所有字符与从 0020(空格)的十六进制代码匹配。

使用

Pattern nonASCII = Pattern.compile("[^\\x00-\\x7f]+|[\\x00-\\x20]+");

\x00-\x20 将匹配您需要删除的所有控制字符,[^\x00-\x7f] 将匹配非 ASCII 字符。

+量词会匹配1次或多次,从而一次性删除/替换匹配到的字符 block 。

关于java - jackson 错误: unacceptable character '' (0x0) special characters are not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116848/

相关文章:

java - 当来自不同实体类型的 ID 重叠时,是否可以将 @JsonIdentityInfo 与 ObjectIdGenerators.PropertyGenerator 一起使用?

javascript - 如何为我的正则表达式指定非捕获组以允许带有破折号的标签

javascript - 正则表达式问题 - HTML 标签内容

java - Jackson 没有大写 XML 元素

java - 通过用户输入更改变量

java - 如何在另一个/下一个 Activity 中显示微调器选择的值作为 android 中的微调器本身?

indentation - 为什么 Java 库源代码的缩进如此奇怪?

regex - gitk中正则表达式的格式是什么?

java - 如何在Android中使用Jackson解析器处理json数组解析

java - 协调 jackson 操作的数据类型