Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
json-schema-to-zod
Advanced tools
Looking for the exact opposite? Check out zod-to-json-schema
A runtime package and CLI tool to convert JSON schema (draft 4+) objects or files into Zod schemas in the form of JavaScript code. Uses Prettier for formatting.
Just paste your JSON schemas here!
Installation:
npm i -g json-schema-to-zod
Example:
json-schema-to-zod -s myJson.json -t mySchema.ts
Flag | Shorthand | Function |
---|---|---|
--source | -s | Source file name (required) |
--target | -t | Target file name |
--name | -n | The name of the schema in the output |
--deref | -d | Uses json-schema-ref-parser to dereference the schema |
--without-defaults | -wd | Ignore default values in the schema |
--recursionDepth | -rd | Maximum depth of recursion in schema before falling back to z.any() . Defaults to 0. ` |
--module | -m | Force module syntax ("esm" or "cjs" ) |
jsonSchemaToZod
will output the full module code, including a Zod import. If you only need the Zod schema itself, try one of the parsers directly. If you need to deref your JSON schema, try awaiting jsonSchemaDereffed
.
import {
jsonSchemaToZod,
jsonSchemaToZodDereffed,
parseSchema,
} from "json-schema-to-zod";
const myObject = {
type: "object",
properties: {
hello: {
type: "string",
},
},
} as const;
const module = jsonSchemaToZod(myObject);
const dereffed = await jsonSchemaToZodDereffed(myObject);
const schema = parseSchema(myObject);
module
/dereffed
=
import { z } from "zod";
export default z.object({ hello: z.string().optional() });
schema
=
z.object({ hello: z.string().optional() });
You can pass a ParserOverride
to the overrideParser
option, which is a function that receives the current schema node and the reference object, and should return a string when it wants to replace a default output. If the default output should be used for the node, just return nothing.
The output of this package is not meant to be used at runtime. JSON Schema and Zod does not overlap 100% and the scope of the parsers are purposefully limited in order to help the author avoid a permanent state of chaotic insanity. As this may cause some details of the original schema to be lost in translation, it is instead recommended to use tools such as (Ajv)[https://ajv.js.org/] to validate your runtime values directly against the original JSON Schema.
That said, it's possible to use eval
. Here's an example that you shouldn't use:
const zodSchema = eval(jsonSchemaToZod({ type: "string" }, { module: "cjs" }));
zodSchema.safeParse("Please just use Ajv instead");
FAQs
Converts JSON schema objects or files into Zod schemas
The npm package json-schema-to-zod receives a total of 23,511 weekly downloads. As such, json-schema-to-zod popularity was classified as popular.
We found that json-schema-to-zod demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.