#json-schema #json #code-gen #codegen #generate-json #quicktype

quick-type-schema

生成 JSON 架构和语言绑定

2 个版本

0.1.1 2024 年 6 月 13 日
0.1.0 2024 年 6 月 2 日

#838 in 开发工具

Download history 134/week @ 2024-05-27 43/week @ 2024-06-03 124/week @ 2024-06-10 37/week @ 2024-06-17

80 每月下载次数

BSD-2-Clause

18KB
392

quick-type-schema

Version Badge Docs Badge License Badge Downloads Badge

quick-type-schema 是一个简单的库,它通过将您的 Rust 类型转换为 JSON 架构,然后通过 quicktype.io 运行,从而将您的类型转换为任何语言。该库是为 bubbel-backend 创建的,现已被改用于通用场景!

为了100%明确,这个库是 quicktype.io 的包装器。另外,并非所有情况和选项都已测试/可用。请报告您遇到的所有问题。

先决条件

由于这个库是 quicktype 的包装器,您需要安装 npxquicktype。后者启动速度更快。

另外,您还需要从 schema-rs 中导出您的类型所需的 JsonSchema 特性。

使用方法

添加到 Cargo.toml

[dependencies]
quick-type-schema = "0.1"
use quick_type_schema::{CodegenContext, Language};

// quicktype cli override arguments can be explicitly added here.
// These overrides even affect `Language` passed in `codegen.finish`
// Ex: `Some(&["-l", "typescript", "--just-types"])`
let mut codegen = CodegenContext::new(None);

// Add a type that has derived `JsonSchema`
codegen.add_type::<MyStruct>();

// Add your own json schema
codegen.add_schema("{ ... }");

codegen.finish(Language::Typescript);

您可以将这些添加到构建过程中,但由于 quicktype 启动速度慢且缺乏缓存,这强烈不推荐。

语言支持

quick-type-schema 几乎支持 quicktype 支持的所有语言。然而,由于不兼容性或复杂性(显著的包括 C、C++、Java、Kotlin、Objective-C 和 Scala3),一些语言已被排除。对于这些语言,请使用覆盖参数并参考 quicktype 命令行界面 - quicktype --help。以下是支持的语言

Typescript
JsonSchema
CSharp
    +via Newton Soft
    +via System.Text.Json
Crystal
Dart
Elm
Go
Haskell
Python
    +via v3.5
    +via v3.6
    +via v3.7
Ruby
Rust
Smithy
Swift

依赖项

~140–450KB