Configs2026年5月3日·1 分钟阅读

Ajv — The Fastest JSON Schema Validator for JavaScript

Ajv is a high-performance JSON Schema validator for JavaScript and TypeScript that compiles schemas into optimized validation functions, used by millions of projects for data validation at runtime.

Introduction

JSON Schema is the standard way to describe the shape of JSON data, but validating against a schema at runtime can be slow if done naively. Ajv solves this by compiling each schema into a specialized JavaScript function that performs validation without re-parsing the schema on every call, making it the fastest validator available for the Node.js and browser ecosystem.

What Ajv Does

  • Validates JSON data against JSON Schema drafts 4, 6, 7, 2019-09, and 2020-12
  • Compiles schemas into optimized validation functions for maximum throughput
  • Supports custom keywords, formats, and vocabularies for domain-specific validation
  • Provides detailed error messages with JSON Pointer paths to invalid values
  • Works in Node.js and browsers with zero native dependencies

Architecture Overview

When you pass a schema to Ajv, it parses the schema tree and generates a specialized JavaScript validation function using code generation. This function contains only the checks relevant to that specific schema, eliminating runtime branching. Ajv caches compiled validators by schema identity so repeated validations incur no compilation overhead. For schemas that reference other schemas via $ref, Ajv resolves references at compile time and inlines or links the generated code accordingly. The plugin architecture allows adding custom keywords that hook into the code generation pipeline.

Self-Hosting & Configuration

  • Install via npm or yarn: npm install ajv
  • Import and instantiate: const ajv = new Ajv({ allErrors: true })
  • Use ajv-formats plugin for built-in format validation (email, uri, date-time, etc.)
  • Enable strict mode with { strict: true } to catch schema authoring mistakes early
  • Configure coercion with { coerceTypes: true } to auto-convert string inputs to declared types

Key Features

  • Schema compilation produces validation functions that run at native JavaScript speed
  • Supports all modern JSON Schema drafts including 2020-12 with dynamic references
  • Standalone code generation outputs portable validation modules with no Ajv runtime dependency
  • Discriminated unions optimize validation of tagged union types using if/then/else
  • TypeScript type inference from schemas provides compile-time safety alongside runtime validation

Comparison with Similar Tools

  • Zod — TypeScript-first schema builder; Ajv validates against standard JSON Schema, enabling cross-language reuse
  • Yup — Object schema validation with coercion; less performant and not JSON Schema compliant
  • io-ts — TypeScript codec library with functional style; Ajv offers better raw throughput
  • Joi — Expressive schema DSL for Node.js; Ajv is significantly faster due to code compilation
  • Superstruct — Lightweight structural validation; smaller API surface but no JSON Schema support

FAQ

Q: Why is Ajv faster than other validators? A: Ajv compiles each schema into a specialized JavaScript function at setup time, so validation runs as straight-line code without schema interpretation overhead.

Q: Can I use Ajv in the browser? A: Yes. Ajv works in any JavaScript environment. The standalone code generation feature can produce bundle-friendly modules with no runtime dependency.

Q: How do I validate API request bodies with Ajv? A: Many frameworks (Fastify, Express with middleware) integrate Ajv directly. Pass your JSON Schema to the framework's validation option and Ajv handles the rest.

Q: Does Ajv support custom validation logic? A: Yes. Custom keywords let you add domain-specific validation rules that integrate into the compiled validation function.

Sources

讨论

登录后参与讨论。
还没有评论,来写第一条吧。

相关资产