1 个不稳定版本
0.0.1 | 2023年9月20日 |
---|
#14 在 #mask
18KB
397 行
json_mask
使用JSON Schema作为掩码,将JSON对象过滤为子集。
详见docs.rs获取详细信息。
许可证
本项目采用以下任一许可证:
任选其一。
本项目的SPDX许可证标识为MIT OR Apache-2.0
。
lib.rs
:
此库提供mask::JsonMasker
,它接受一个JSON Schema文档。
一个示例用法是API,其中后端生成最新的响应版本,但应用掩码将最新响应转换为其他API版本以满足向后兼容性。
这是一个早期构建,其中输入验证更为灵活。基于实际使用,第一个稳定版本可能会限制为正式的schema draft标准,或者允许您限制为特定的几个。
示例
-
使用
from_str
或from_reader
生成掩码并将其应用于文档。use json_mask::from_str; use json_mask::JsonMasker; use json_mask::ValidJsonSchema; let mut document = serde_json::from_str(r#"{ "foo": 1, "bar": 2}"#).unwrap(); let schema = r#" { "$schema": "https://json-schema.fullstack.org.cn/draft-04/schema", "title": "Demo Schema", "description": "Demo", "type": "object", "properties": { "foo": { "type": "integer" } } } "#; let mask = from_str(schema).unwrap(); let masker = JsonMasker::new(mask); masker.mask(&mut document); assert_eq!(r#"{"foo":1}"#, serde_json::to_string(&document).unwrap())
依赖项
~10–18MB
~265K SLoC