| Crates.io | polywrap-jsonref |
| lib.rs | polywrap-jsonref |
| version | 0.1.0 |
| created_at | 2022-11-06 00:15:27.351211+00 |
| updated_at | 2022-11-06 00:15:27.351211+00 |
| description | Deref your JSONSchema here! |
| homepage | https://github.com/namesty/jsonref-rs |
| repository | https://github.com/namesty/jsonref-rs |
| max_upload_size | |
| id | 706210 |
| size | 25,688 |
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.