我试图从MySQL使用杰克逊解析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>
我正在尝试使用regex:
替换它Pattern nonASCII = Pattern.compile("[^\x00-\x7f]");//("[^\x00-\x7f]");
resultContent = Normalizer.normalize(nonASCII.matcher(resultContent).replaceAll("");
ResultContentModel rc = mapper.readValue(resultContent, ResultContentModel.class);
但仍然不起作用。我该怎么办?
似乎您想要匹配任何非ascii +所有字符与十六进制代码从00
到20
(空格)。
Pattern nonASCII = Pattern.compile("[^\x00-\x7f]+|[\x00-\x20]+");
x00-x20
将匹配您需要删除的所有控制字符,[^x00-x7f]
将匹配非ascii字符。
+
量词将匹配一次或多次出现,以便一次删除/替换匹配的字符块