11

この質問はこの質問を拡張します。

前のソリューションは、フィールドが数個しかない場合はうまく機能しますが、フィールドが 12 個を超えると維持できなくなります。現在、私の現在のセットアップは完全なデータ バインディングを使用しているため、Jackson が JSON を自動的に逆シリアル化するために使用する POJO があります。

ただし、以前と同様に、特定のフィールドには通過する必要がある制約があります。基本的に、これに似た答えを探していますが、プロパティを設定する必要はありません。フィールドが制約を満たさない場合にフィルターとして機能し、カスタム例外をスローするカスタム デシリアライザーです。フィルターの最後まで例外がスローされなかった場合、Jackson は JSON を POJO に自動的にバインドする必要があります。

4

3 に答える 3

5

Json スキーマがニーズに合うようです。逆シリアル化する前に、json 文字列の柔軟な (そして複雑な) 検証規則を使用できます。これには、必須フィールド、正規表現ベースの値チェック、業界標準の形式 (たとえば、フィールドを「メール」形式として定義できます)、フィールド間の依存関係 (最新の v4) などが含まれます。

上記は言語に依存しない標準です。Java の実装に関しては、最新の json スキーマ バージョンをサポートするものを使用しました (標準はまだ進化中です)。バリデーターの最初の統合は大変な作業でした (非常に動的な json モデルのため) が、その後は新しい検証ルールを導入するのが非常に便利です (json スキーマ ファイルを変更する必要があるだけです)。

于 2016-09-21T07:52:01.880 に答える
2

考慮事項: 逆シリアル化中の検証を気にしない場合は、@JsonIgnoreProperties(ignoreUnknown = true)POJO クラスのアノテーションを試してください。後で、実際のビジネス ロジックが pojo クラスで動作する検証を行うことができます。

于 2016-09-30T05:51:40.040 に答える