我有一个非常大的 JSON 文件。其中大部分是有效的 JSON 数据,但部分不是。以下是我的案例的简化:
[
"this is valid: \ud835\udc47",
"this is invalid: \ud835",
]
第一项是有效的并且将被成功解析,但是当尝试第二项时,反序列化将失败,因为 UTF-8 根本不允许该\ud835
字符,而 UTF-16 不允许一个单独的\ud835
字符,因为它需要然后是另一个十六进制转义。
使用使用 Python 的内置 JSON 反序列化器并将数据保存到数据库的 HTTP 服务器时,会出现此问题。Python 的反序列化程序接受了一个单独的“\ud835”字符,该字符不是有效的 UTF-8 或 UTF-16。现在,当我们想使用 serde 将此应用程序和数据库迁移到 Rust 时,它会捕获这个无效的 UTF-8/16 字符串。