# JSON Schema Generator This is a command-line tool that generates JSON Schema from JSON data. It's built in Rust and provides a simple way to create JSON Schema definitions from existing JSON structures. ## Features - Generate JSON Schema from JSON files or stdin - Support for all JSON data types (object, array, string, number, boolean, null) - Automatic detection of required fields - Handling of mixed-type arrays - Output to file or stdout ## Installation To install the JSON Schema Generator, you need to have Rust and Cargo installed on your system. Then, you can clone this repository and build the project: ### Use directly as a Cargo utility ```bash cargo install json_schema_generator json_schema_generator test.json ``` ### Build from Source ```bash git clone https://github.com/AtlasPilotPuppy/json-schema-generator.git cd json-schema-generator cargo build --release ``` The compiled binary will be available in `target/release/json_schema_generator`. ## Usage ``` json_schema_generator [OPTIONS] [INPUT_FILE] ``` ### Options: - `-o, --output `: Specify the output file. If not provided, output will be written to `.jsonschema` or stdout if reading from stdin. - `-s, --stdout`: Force output to stdout, even when an input file is provided. - `-h, --help`: Print help information. ### Examples: 1. Generate schema from a file: ``` json_schema_generator input.json ``` 2. Generate schema from a file and save to a specific output file: ``` json_schema_generator input.json -o output_schema.json ``` 3. Generate schema from stdin: ``` cat input.json | json_schema_generator ``` 4. Generate schema from a file and output to stdout: ``` json_schema_generator input.json --stdout ``` ## JSON Schema Version This tool generates JSON Schema compatible with draft-07. ## Limitations - The tool generates a basic schema and may not capture all possible constraints or patterns in your data. - The schema for arrays assumes all items in the array follow the same schema. ## Contributing Contributions are welcome! Please feel free to submit a Pull Request.