#json-schema #recursion #programmatically #jsonref #json-ref

polywrap-jsonref

在此处解引用您的JSONSchema!

1 个不稳定版本

0.1.0 2022年11月6日

#1607数据库接口

Download history 72/week @ 2024-03-11 81/week @ 2024-03-18 150/week @ 2024-03-25 155/week @ 2024-04-01 61/week @ 2024-04-08 83/week @ 2024-04-15 77/week @ 2024-04-22 84/week @ 2024-04-29 102/week @ 2024-05-06 91/week @ 2024-05-13 70/week @ 2024-05-20 93/week @ 2024-05-27 73/week @ 2024-06-03 68/week @ 2024-06-10 62/week @ 2024-06-17 96/week @ 2024-06-24

307 每月下载量
用于 24 个Crate (3 直接)

MIT 许可证

23KB
348

jsonref解引用JSONSchema $ref 属性并创建一个新的解引用模式。

解引用通常在验证过程中由JSONSchema验证器执行,但有时在独立于验证器的情况下进行此操作是有用的,例如

  • 以编程方式分析模式以查看有哪些字段。
  • 以编程方式修改模式。
  • 传递到从模式创建假JSON数据的工具。
  • 将模式传递给表单生成工具。

示例

use serde_json::json;
use jsonref::JsonRef;

let mut simple_example = json!(
          {"properties": {"prop1": {"title": "name"},
                          "prop2": {"$ref": "#/properties/prop1"}}
          }
       );

let mut jsonref = JsonRef::new();

jsonref.deref_value(&mut simple_example).unwrap();

let dereffed_expected = json!(
    {"properties": 
        {"prop1": {"title": "name"},
         "prop2": {"title": "name"}}
    }
);
assert_eq!(simple_example, dereffed_expected)

注意:如果JSONSchema有递归的 $ref,则只会发生第一次递归。这是为了防止无限循环。

依赖关系

~7.5MB
~230K SLoC