- 错误
com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 8)): has to be escaped using backslash to be included in string value
at [Source...
- 原因:
导入json中存在Ascii码值为32(十进制)以下的控制字符,如换行、文件分隔符等,需要将其替换掉。
如:存在文件控制符FS,存在空格,换行符,制表符等,其是不可见字符,但是有些软件打开时因为其使用的编码原因会显示成一些奇怪字符。文件控制符Ascill的10进制值为28,16进制值为1C
- 解决:
通过正则表达式将json中的控制符(ascill编码低于32的zif)替换掉
val invalidCharReg ="""[\u0000-\u001F]+"""
val source: Source = Source.fromString(row)
val lineIterator: Iterator[String] = source.getLines()
lineIterator.foreach(line => {
val newStr = line.replaceAll(invalidCharReg,"")
println(newStr)
})
newStr即正常数据