PythonでJSONデータを検証!jsonschemaの使い方
目次
- はじめに
-
jsonschemaとは - インストール方法
- 基本的な使い方
- バリデーションの例
- 便利な応用例
- まとめ
1. はじめに
JSON は Web API や設定ファイルでよく使われる形式です。
しかし、受け取る JSON データが想定通りかどうかは常に確認する必要があります。
そこで便利なのが Python の jsonschema です。
jsonschema を使えば、JSON データがあるスキーマに沿っているか簡単に検証できます。
2. jsonschemaとは
jsonschema は Python のライブラリで、JSON Schema という規格に従って JSON データの構造を検証できます。
特徴:
- データ型のチェック(文字列、数値、配列、オブジェクトなど)
- 必須項目のチェック
- 値の範囲や文字列長の制約
- ネストした構造の検証
3. インストール方法
pip install jsonschema
4. 基本的な使い方
ステップ1: スキーマを定義
スキーマは JSON データの「設計図」です。
例えば、ユーザー情報を検証する場合:
schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer", "minimum": 0},
"email": {"type": "string", "format": "email"}
},
"required": ["name", "age"]
}
ステップ2: データを準備
user_data = {
"name": "Alice",
"age": 25,
"email": "alice@example.com"
}
ステップ3: バリデーション
from jsonschema import validate, ValidationError
try:
validate(instance=user_data, schema=schema)
print("データは有効です。")
except ValidationError as e:
print("データが無効です:", e.message)
5. バリデーションの例
必須項目がない場合
invalid_data = {"age": 25}
try:
validate(instance=invalid_data, schema=schema)
except ValidationError as e:
print(e.message) # "'name' is a required property"
値が不正な場合
invalid_data = {"name": "Bob", "age": -5}
try:
validate(instance=invalid_data, schema=schema)
except ValidationError as e:
print(e.message) # "-5 is less than the minimum of 0"
6. 便利な応用例
配列の検証
schema = {
"type": "array",
"items": {"type": "integer"}
}
validate([1, 2, 3], schema) # OK
validate([1, "a", 3], schema) # NG
ネストしたオブジェクト
schema = {
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
},
"required": ["name"]
}
}
}
data = {"user": {"name": "Charlie", "age": 30}}
validate(instance=data, schema=schema) # OK
7. まとめ
-
jsonschemaは JSON データの構造や値を簡単に検証できる。 - スキーマを定義して
validate()するだけでチェック可能。 - ネスト構造や配列、必須項目、数値範囲などもサポート。
- Web API や設定ファイルのデータチェックに非常に便利。
💡 ポイント
- スキーマに
"required"を入れることで必須項目を簡単に管理できる -
formatを使うとメールや日時などの形式チェックもできる - 複雑なデータでも再帰的にネストして検証可能