#json #serde-json #nan #infinity #python #deserialize-json

json-forensics

一个crate,用于处理由损坏的Python引起的JSON有效载荷(NaN和无穷大)

1 个不稳定版本

0.1.1 2023年3月30日

2391解析器实现

Download history 462/week @ 2024-04-06 676/week @ 2024-04-13 389/week @ 2024-04-20 257/week @ 2024-04-27 194/week @ 2024-05-04 287/week @ 2024-05-11 132/week @ 2024-05-18 97/week @ 2024-05-25 184/week @ 2024-06-01 264/week @ 2024-06-08 118/week @ 2024-06-15 120/week @ 2024-06-22 129/week @ 2024-06-29 100/week @ 2024-07-06 594/week @ 2024-07-13 352/week @ 2024-07-20

1,186 每月下载量

BSD-3-Clause

10KB
178

rust-json-forensics

此crate提供了一个函数,该函数接受一个字节数组并

  • 将无效的JSON标记 NaNInfinity 转换为 0
  • 将所有在 serde-json 中会导致溢出的整数替换为 0

这只是为了使JSON能够解析。所有操作都是在原地进行的。

这很有用,因为Python JSON库传统上会在遇到 NaNInfinity 值时发出无效的JSON。如果您必须支持此类客户端,则可以使用此包装器来解析此类JSON文档。

python-json-read-adapter 之后


lib.rs:

此crate实现了一个 Read 适配器,该适配器将无效的JSON标记 NaNInfinity 转换为其他标记,而不在其他方面扭曲流。它通过将 NaNInfinity 转换为 0.0 来实现这一点。

这很有用,因为Python JSON库传统上会在遇到 NaNInfinity 值时发出无效的JSON。如果您必须支持此类客户端,则可以使用此包装器来解析此类JSON文档。

这只是使JSON能够解析的一种方式,并且 0 是一种可以以标准化的方式插入而不会改变任何位置值的值。

示例转换

以下JSON文档

{"nan":NaN,"inf":Infinity,"-inf":-Infinity}

因此转换为

{"nan":0  ,"inf":0       ,"-inf":-0       }

serde支持

如果启用了 serde 功能,则该crate提供了一些基本的包装器,用于围绕 serde_json 进行快速反序列化,并运行转换。

依赖关系

~0–265KB