ajv vs joi vs yup vs jsonschema vs validator
データバリデーションライブラリ
ajvjoiyupjsonschemavalidator類似パッケージ:

データバリデーションライブラリ

データバリデーションライブラリは、アプリケーションが受け取るデータが期待される形式や条件を満たしているかを検証するためのツールです。これにより、データの整合性を保ち、エラーを未然に防ぐことができます。これらのライブラリは、特にAPIやフォームデータの検証に役立ちます。

npmのダウンロードトレンド

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
ajv258,381,79214,6361.03 MB31822日前MIT
joi18,241,27421,201557 kB1914ヶ月前BSD-3-Clause
yup10,249,55823,693270 kB2406ヶ月前MIT
jsonschema5,650,4931,87083.5 kB681年前MIT
validator023,760817 kB3703ヶ月前MIT

機能比較: ajv vs joi vs yup vs jsonschema vs validator

パフォーマンス

  • ajv:

    AJVは非常に高速なバリデーションを提供し、大量のデータを処理する際に優れたパフォーマンスを発揮します。

  • joi:

    Joiは、パフォーマンスは良好ですが、AJVほどではありません。複雑なバリデーションルールを持つ場合は、パフォーマンスに影響が出ることがあります。

  • yup:

    Yupは、非同期バリデーションをサポートしていますが、AJVに比べるとパフォーマンスは劣ります。

  • jsonschema:

    jsonschemaは、標準に基づいたバリデーションを行いますが、AJVと比較するとパフォーマンスは劣ります。

  • validator:

    validatorは、シンプルな文字列バリデーションに特化しているため、非常に軽量で高速です。

使いやすさ

  • ajv:

    AJVは、JSON Schemaを使用するため、スキーマを理解している必要がありますが、非常に効率的です。

  • joi:

    Joiは、直感的なAPIを持ち、スキーマの定義が簡単で、初心者にも扱いやすいです。

  • yup:

    Yupは、スキーマベースのアプローチを採用しており、Reactとの統合が容易です。

  • jsonschema:

    jsonschemaは、標準に従っているため、他のツールとの互換性が高いですが、使い方に慣れるまで時間がかかることがあります。

  • validator:

    validatorは、シンプルなAPIを持ち、すぐに使い始めることができます。

拡張性

  • ajv:

    AJVは、カスタムバリデーションを追加するための拡張性が高く、柔軟に対応できます。

  • joi:

    Joiは、カスタムバリデーションを簡単に作成でき、複雑なビジネスロジックにも対応可能です。

  • yup:

    Yupは、スキーマを簡単に拡張でき、非同期バリデーションにも対応しています。

  • jsonschema:

    jsonschemaは、標準に基づいているため、拡張性は限られていますが、他のツールとの互換性があります。

  • validator:

    validatorは、シンプルな機能に特化しているため、拡張性はあまりありません。

エラーメッセージのカスタマイズ

  • ajv:

    AJVは、エラーメッセージをカスタマイズする機能があり、ユーザーにわかりやすいメッセージを提供できます。

  • joi:

    Joiは、エラーメッセージのカスタマイズが容易で、具体的なフィードバックを提供できます。

  • yup:

    Yupは、エラーメッセージを柔軟にカスタマイズでき、ユーザーに適切なフィードバックを提供できます。

  • jsonschema:

    jsonschemaは、エラーメッセージのカスタマイズが難しい場合がありますが、標準に従ったメッセージを提供します。

  • validator:

    validatorは、エラーメッセージのカスタマイズが限られていますが、シンプルなバリデーションには適しています。

非同期バリデーション

  • ajv:

    AJVは、非同期バリデーションをサポートしていません。

  • joi:

    Joiは、非同期バリデーションをサポートしており、Promiseを使用してバリデーションを行うことができます。

  • yup:

    Yupは、非同期バリデーションをサポートしており、特にReactとの統合で便利です。

  • jsonschema:

    jsonschemaは、非同期バリデーションをサポートしていません。

  • validator:

    validatorは、非同期バリデーションをサポートしていません。

選び方: ajv vs joi vs yup vs jsonschema vs validator

  • ajv:

    AJVは、JSON Schemaに基づく高速なバリデーションを提供します。パフォーマンスが重要な場合や、大量のデータを扱う場合に最適です。

  • joi:

    Joiは、オブジェクトスキーマの定義が容易で、直感的なAPIを持っています。複雑なバリデーションルールが必要な場合に適しています。

  • yup:

    Yupは、スキーマベースのバリデーションを提供し、Promiseをサポートしています。非同期バリデーションが必要な場合や、Reactとの統合が求められる場合に適しています。

  • jsonschema:

    jsonschemaは、JSON Schema仕様に準拠したバリデーションを行います。標準に従いたい場合や、他のツールと連携する必要がある場合に適しています。

  • validator:

    validatorは、シンプルな文字列バリデーションに特化しており、軽量で使いやすいです。簡単なバリデーションが必要な場合に適しています。

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