ajv vs joi vs jsonschema vs is-my-json-valid
JSONバリデーションライブラリ
ajvjoijsonschemais-my-json-valid類似パッケージ:
JSONバリデーションライブラリ

JSONバリデーションライブラリは、JSONデータが特定のスキーマに従っているかどうかを検証するためのツールです。これにより、データの整合性を確保し、アプリケーションの信頼性を向上させることができます。これらのライブラリは、APIのレスポンスや設定ファイルなど、さまざまなJSONデータの検証に利用されます。

npmのダウンロードトレンド
3 年
GitHub Starsランキング
統計詳細
パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
ajv172,616,38014,4971.03 MB3051年前MIT
joi14,286,99121,186557 kB18616日前BSD-3-Clause
jsonschema4,527,7871,86383.5 kB681年前MIT
is-my-json-valid1,601,46996640.2 kB554年前MIT
機能比較: ajv vs joi vs jsonschema vs is-my-json-valid

パフォーマンス

  • ajv:

    AJVは、非常に高速なバリデーションを提供します。特に、コンパイルされたスキーマを使用すると、パフォーマンスが大幅に向上します。大規模なデータセットを扱う際に、その速度が重要な要素となります。

  • joi:

    Joiは、バリデーションの複雑さに応じてパフォーマンスが変わります。複雑なルールを持つ場合、パフォーマンスが低下することがありますが、一般的な使用には問題ありません。

  • jsonschema:

    jsonschemaは、標準に基づいたバリデーションを提供しますが、AJVと比較するとパフォーマンスは劣る場合があります。特に大規模なデータセットでは、速度が課題となることがあります。

  • is-my-json-valid:

    is-my-json-validは、シンプルな実装により、軽量で迅速なバリデーションを提供します。小規模なデータセットに対しては十分なパフォーマンスを発揮しますが、大規模データには向いていない可能性があります。

使いやすさ

  • ajv:

    AJVは、スキーマの定義が簡単で、使いやすいAPIを提供しています。特に、JSONスキーマの標準に準拠しているため、他のツールとの互換性が高いです。

  • joi:

    Joiは、直感的なAPIを提供し、複雑なバリデーションルールを簡単に定義できます。エラーメッセージもカスタマイズ可能で、開発者にとって使いやすいです。

  • jsonschema:

    jsonschemaは、JSONスキーマに基づいているため、スキーマの定義が明確で、他のツールとの統合が容易です。ただし、やや学習曲線があります。

  • is-my-json-valid:

    is-my-json-validは、シンプルなインターフェースを持ち、すぐに使い始めることができます。特に、初心者にとっては学習コストが低いです。

エラーメッセージ

  • ajv:

    AJVは、エラーメッセージのカスタマイズが可能で、詳細な情報を提供します。これにより、デバッグが容易になります。

  • joi:

    Joiは、エラーメッセージを詳細にカスタマイズできるため、開発者が理解しやすいメッセージを提供できます。特に、ユーザー向けのアプリケーションにおいて重要です。

  • jsonschema:

    jsonschemaは、標準的なエラーメッセージを提供しますが、カスタマイズ性はAJVやJoiに比べて劣ります。

  • is-my-json-valid:

    is-my-json-validは、基本的なエラーメッセージを提供しますが、カスタマイズ性は低いです。シンプルなプロジェクトには適していますが、複雑な要件には不向きです。

拡張性

  • ajv:

    AJVは、プラグインを使用して機能を拡張することができ、特定のニーズに応じたカスタマイズが可能です。

  • joi:

    Joiは、拡張性が高く、カスタムバリデーションルールを簡単に作成できます。特に、特定のビジネスロジックに基づくバリデーションが必要な場合に便利です。

  • jsonschema:

    jsonschemaは、標準的なスキーマに基づいているため、拡張性は限られていますが、他のツールとの互換性が高いです。

  • is-my-json-valid:

    is-my-json-validは、拡張性が限られており、基本的なバリデーション機能に特化しています。

サポートするスキーマバージョン

  • ajv:

    AJVは、JSONスキーマの最新バージョンをサポートしており、最新の機能を利用できます。

  • joi:

    Joiは、独自のバリデーションルールを持っており、JSONスキーマとは異なるため、互換性がありません。

  • jsonschema:

    jsonschemaは、JSONスキーマの標準に準拠しており、広く受け入れられたバリデーションを提供します。

  • is-my-json-valid:

    is-my-json-validは、古いバージョンのスキーマに依存しているため、最新の機能は利用できません。

選び方: ajv vs joi vs jsonschema vs is-my-json-valid
  • ajv:

    AJVは、高速なJSONスキーマバリデーションを必要とする場合に選択してください。特に、パフォーマンスが重要な大規模なアプリケーションに適しています。

  • joi:

    Joiは、複雑なバリデーションルールを定義したい場合に選択してください。特に、オブジェクトの構造が複雑な場合や、詳細なエラーメッセージが必要な場合に適しています。

  • jsonschema:

    jsonschemaは、JSONスキーマに基づく標準的なバリデーションが必要な場合に選択してください。特に、スキーマの定義を重視するプロジェクトに適しています。

  • is-my-json-valid:

    is-my-json-validは、シンプルで軽量なバリデーションが必要な場合に選択してください。特に、簡単なプロジェクトや小規模なアプリケーションに最適です。

ajv のREADME
Ajv logo

 

Ajv JSON schema validator

The fastest JSON validator for Node.js and browser.

Supports JSON Schema draft-04/06/07/2019-09/2020-12 (draft-04 support requires ajv-draft-04 package) and JSON Type Definition RFC8927.

build npm npm downloads Coverage Status SimpleX Gitter GitHub Sponsors

Ajv sponsors

Mozilla

Microsoft

RetoolTideliftSimpleX

Contributing

More than 100 people contributed to Ajv, and we would love to have you join the development. We welcome implementing new features that will benefit many users and ideas to improve our documentation.

Please review Contributing guidelines and Code components.

Documentation

All documentation is available on the Ajv website.

Some useful site links:

Please sponsor Ajv development

Since I asked to support Ajv development 40 people and 6 organizations contributed via GitHub and OpenCollective - this support helped receiving the MOSS grant!

Your continuing support is very important - the funds will be used to develop and maintain Ajv once the next major version is released.

Please sponsor Ajv via:

Thank you.

Open Collective sponsors

Performance

Ajv generates code to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization.

Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:

Performance of different validators by json-schema-benchmark:

performance

Features

Install

To install version 8:

npm install ajv

Getting started

Try it in the Node.js REPL: https://runkit.com/npm/ajv

In JavaScript:

// or ESM/TypeScript import
import Ajv from "ajv"
// Node.js require:
const Ajv = require("ajv")

const ajv = new Ajv() // options can be passed, e.g. {allErrors: true}

const schema = {
  type: "object",
  properties: {
    foo: {type: "integer"},
    bar: {type: "string"},
  },
  required: ["foo"],
  additionalProperties: false,
}

const data = {
  foo: 1,
  bar: "abc",
}

const validate = ajv.compile(schema)
const valid = validate(data)
if (!valid) console.log(validate.errors)

Learn how to use Ajv and see more examples in the Guide: getting started

Changes history

See https://github.com/ajv-validator/ajv/releases

Please note: Changes in version 8.0.0

Version 7.0.0

Version 6.0.0.

Code of conduct

Please review and follow the Code of conduct.

Please report any unacceptable behaviour to ajv.validator@gmail.com - it will be reviewed by the project team.

Security contact

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.

Open-source software support

Ajv is a part of Tidelift subscription - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.

License

MIT