Class JsonStreamingValidateCommand
java.lang.Object
com.streamconverter.command.AbstractStreamCommand
com.streamconverter.command.ConsumerCommand
com.streamconverter.command.impl.json.JsonStreamingValidateCommand
- All Implemented Interfaces:
IStreamCommand
JsonSurferを使った完全ストリーミングJSON検証コマンド
このクラスは真のストリーミング処理でJSONを検証します。 従来のJSON Schema検証と組み合わせて、大容量データに対応しつつ詳細な検証を提供します。
アプローチ:
1. JsonSurferによる高速ストリーミング事前検証(構造・必須フィールド確認)
2. 事前検証通過時のみJSON Schema検証実行
3. 任意サイズのデータを一定メモリで処理
ライブラリ選択理由:
JsonSurferを採用した理由:
- ✅ 完全ストリーミング処理(DOM構築なし)
- ✅ JsonPathサポートによる柔軟な検証ルール記述
- ✅ イベントドリブンでメモリ効率最大化
- ✅ Jackson統合で既存依存関係と整合
他ライブラリを採用しなかった理由:
- StAXON: XML思考の強制、namespace問題、JSON型情報の欠如
- JSR 353: 低レベルAPI、JsonPathなし、ボイラープレート大量
- Gson JsonReader: プル解析のみ、状態管理必須、実装複雑化
使用例:
JsonStreamingValidateCommand validator = new JsonStreamingValidateCommand("schema/user.json"); validator.consume(jsonInputStream);
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
consume
(InputStream inputStream) JSONストリーミング検証を実行しますスキーマパスを取得Methods inherited from class com.streamconverter.command.ConsumerCommand
executeInternal
Methods inherited from class com.streamconverter.command.AbstractStreamCommand
execute, getCommandDetails
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.streamconverter.command.IStreamCommand
execute
-
Constructor Details
-
JsonStreamingValidateCommand
コンストラクタ- Parameters:
schemaPath
- JSONスキーマファイルのパス- Throws:
IllegalArgumentException
- スキーマパスがnullまたは空の場合StreamProcessingException
- スキーマファイルの読み込みに失敗した場合
-
-
Method Details
-
consume
JSONストリーミング検証を実行します- Specified by:
consume
in classConsumerCommand
- Parameters:
inputStream
- 検証対象のJSONデータを含む入力ストリーム- Throws:
IOException
- I/Oエラーが発生した場合StreamProcessingException
- JSONバリデーションエラーが発生した場合
-
getSchemaPath
スキーマパスを取得- Returns:
- スキーマファイルのパス
-