#json #streaming-json #complete #string #stream #token #completer

no-std streaming-json-completer

从 JSON 令牌流中完整 JSON 文档

2 个不稳定版本

0.2.0-dev2023 年 5 月 5 日
0.1.0 2023 年 5 月 5 日

#14 in #streaming-json

MIT 许可证

170KB
149

Genau

流式 JSON 完整器

流式 JSON 完整器是一个 Rust 库,可以帮助您通过自动添加缺失的关闭字符(引号、花括号和括号)来补充不完整的 JSON 字符串。这在处理流式 JSON 数据或与部分 JSON 字符串一起工作时非常有用,需要确保 JSON 对进一步处理是有效的。

特性

  • 自动补充不完整的 JSON 字符串
  • 处理嵌套对象和数组
  • 处理字符串中的转义字符
  • 对于格式错误的 JSON 输入返回错误
  • 即将推出 为 JavaScript 和 Python 发布包装器

安装

将以下行添加到 Cargo.toml 文件的 [dependencies] 部分

json-completer = "0.1.0"

用法

以下是一个基本示例,展示了如何使用 JSON 完整器库

use json_completer::complete_json;

fn main() {
    let input = r#"{"key": "value", "arr": [1, 2, {"nested_key": "nested_value""#;

    match complete_json(input) {
        Ok(completion) => println!("The missing closing characters are: {}", completion),
        Err(e) => println!("Error: {}", e),
    }
}

有关更多示例和高级用法,请参阅示例目录。特别是,OpenAI 流解析 示例展示了如何使用 JSON 完整器解析来自 OpenAI API 的 JSON 数据流(使用 64bit 的 async-openai 库)。

asciicast

运行测试

要运行 JSON 完整器的测试套件,只需运行

cargo test

这将执行一系列测试,包括嵌套对象和数组、转义引号以及格式错误的 JSON 字符串等不同场景。

贡献

我们欢迎贡献!如果您想做出贡献,请按照以下步骤操作

  • 在 GitHub 上派生存储库
  • 为您的功能或错误修复创建一个新分支
  • 提交您的更改并将分支推送到您的派生
  • 对主存储库创建拉取请求

请确保您的代码遵循 Rust 的最佳实践,并为任何新功能或错误修复包含测试。

许可证

本项目采用 MIT 许可证。

依赖项

~9–20MB
~259K SLoC