1 unstable release

0.1.0 Nov 6, 2022

#1607 in Database interfaces

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 downloads per month
Used in 24 crates (3 directly)

MIT license

23KB
348 lines

jsonref dereferences JSONSchema $ref attributes and creates a new dereferenced schema.

Dereferencing is normally done by a JSONSchema validator in the process of validation, but it is sometimes useful to do this independent of the validator for tasks like:

  • Analysing a schema programatically to see what field there are.
  • Programatically modifying a schema.
  • Passing to tools that create fake JSON data from the schema.
  • Passing the schema to form generation tools.

Example:

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)

Note: If the JSONSchema has recursive $ref only the first recursion will happen. This is to stop an infinate loop.

Dependencies

~7.5MB
~230K SLoC