用途:Schemantic 用于在 Dart 中定义强类型数据类,并自动生成可复用的运行时 JSON schema,适合需要类型安全 JSON 解析或程序化 schema 校验的场景。它是 genkit-dart 框架的标准做法,也可独立使用。
主要能力:用 @Schema() 注解抽象类,抽象 schema 类名以 $ 前缀命名(如 abstract class $User)。运行 dart run build_runner build 生成 .g.dart 文件。构建器会生成不带 $ 的具体类,提供工厂构造 MyObj.fromJson 和普通构造函数,可 toJson 序列化、fromJson 解析。生成的类带静态 $schema 字段(SchemanticType<T>),可读取 jsonSchema 或在运行时用 validate 校验任意 JSON。还提供基础类型构造(如 SchemanticType.integer、string、list、map、voidSchema、dynamicSchema),@AnyOf 支持联合类型并生成辅助类,@IntegerField、@StringField 支持改 JSON key、描述、最小值、默认值、枚举等约束。递归结构需用 useRefs: true,使 schema 生成 $ref。
使用方式:定义 abstract class 并加 part '文件名.g.dart',运行 build_runner 生成代码后即可实例化、序列化与校验。
限制:具体安装依赖版本、支持的 Dart SDK 范围与平台兼容性暂未提供。