ジャクソンフィールド不在対nullの違い
null
最初の例では、フィールドは存在しません。 2番目では、// Absent field {"name": "John Doe"} // Null field {"name": "John Doe", "age": null}
age
ジャクソンJSON処理の欠落フィールドとヌルフィールドをどのように区別できますか? 単一の普遍的な方法はありませんが、いくつかのアプローチを使用できます:age
JsonNode
のようなメソッドを提供して、フィールドの存在を確認します。 を返す場合、フィールドは存在しません。 JsonNode
を返す場合、has(fieldName)
を使用して値を取得できます。 has(fieldName)
を返した場合、フィールドは存在しますが、ヌル値があります。false
true
get(fieldName)
get(fieldName)
null
JsonNode node = objectMapper.readTree(jsonString); if (node.has("age")) { JsonNode ageNode = node.get("age"); if (ageNode.isNull()) { System.out.println("Age field is null"); } else { System.out.println("Age field has a value: " + ageNode.asInt()); //Or appropriate type handling } } else { System.out.println("Age field is absent"); }
0
ポジョスに脱着すると、ミッシングフィールドは通常、オブジェクトの対応するフィールドになります。オブジェクト)。 ただし、ヌルフィールドは明示的にfalse
に設定されます。 このアプローチは、データ型のデフォルト値に依存しています。 このメソッドのみを使用して、欠落フィールドとフィールドをデフォルト値に明示的に設定することはできないことに注意してください。これにより、JSON構造を直接検査し、特定の要件に基づいて不在とヌルフィールドを処理するために独自のロジックを実装できます。取り扱い:null
Integer
値を保持できるように、int
Integer
null
@JsonInclude
の代わりに使用します。 @JsonInclude(Include.NON_NULL)
は、null値のフィールドを省略します。 JSONに存在しないフィールドを省略します。 @JsonInclude(Include.NON_ABSENT)
。NullPointerExceptions
Optional
検証障害:アプリケーションが不在とnullフィールドを正しく区別しない場合、矛盾は発生する可能性があります。これを改善して、カスタムエラーハンドラーを実装して、より有益でユーザーフレンドリーなエラーメッセージを脱出障害中に提供できます。 これには、カスタム例外ハンドラーの作成、またはログフレームワークを使用してエラーを追跡および報告することが含まれます。 明確に定義されたエラー処理戦略により、アプリケーションがデータエラーを優雅に処理し、ユーザーまたは他のシステムに有用なフィードバックを提供できるようになります。
以上がジャクソンフィールドは、ヌルの違いがありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。