#json-schema #mask #json #schema #json-object #filter

json_mask

使用JSON Schema作为掩码,将JSON对象过滤为子集。

1 个不稳定版本

0.0.1 2023年9月20日

#14#mask

MIT/Apache

18KB
397

json_mask

使用JSON Schema作为掩码,将JSON对象过滤为子集。

详见docs.rs获取详细信息。

许可证

本项目采用以下任一许可证:

任选其一。

本项目的SPDX许可证标识为MIT OR Apache-2.0


lib.rs:

githubcrates-iodocs-rs


此库提供mask::JsonMasker,它接受一个JSON Schema文档。

一个示例用法是API,其中后端生成最新的响应版本,但应用掩码将最新响应转换为其他API版本以满足向后兼容性。

这是一个早期构建,其中输入验证更为灵活。基于实际使用,第一个稳定版本可能会限制为正式的schema draft标准,或者允许您限制为特定的几个。

示例

  • 使用from_strfrom_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