フロントエンドからdelta json
を受け取るHTTP PUTエンドポイントをJavaで作成しようとしていますが、「nulls」を実装する方法を理解する上で問題があります。例えば空のJSON対nullへの変換
我々は
id : 1
firstname : Luke
lastname : Xu
age : 24
fav_color : Red
のように見え、我々は{age : 25}
のJSONでPUT request to /person/1
を介して送信データベースモデルを持っている場合。現在、JSONを次のJSONに変換するJOOQ pojoがJavaモデルになっていますが、問題はデータベースの値をnullに更新することです。
それは私のJavaエンドポイントにヒットするとJavaのモデルは単に「ヌル」に両方のケースを設定し、nullを渡されたの間に違いはありません
{age : 25}
と
{id : 1,
firstname : null,
lastname : null,
age : 25,
fav_color : null}
の間に違いはありませんまたは値がまったく渡されていないことを示します。
私は入力ストリーム(JSON型)を処理することも考えましたが、この問題は、私たちのJSON名が、まったく不合理な種類のデータベース列名と同じ名前にする必要があるということです。
"delta json"のみを送信する場合は、データベースを編集するための標準は何ですか?
に私はそれはあなたが使用してJSONの構文解析ライブラリーのための具体的な質問だと信じています。私はあなたのデータモデルにJSONを組み込む何らかのORMを使用すると思います。それは、「値なし」と「値がヌル」の区別をサポートするかどうかをサポートします。私が見たJSON解析ライブラリには、null値のための特別な値(JsonNullなど)がありました。解析には何を使用しますか? – yeputons
DTOを使用してデータベースエンティティオブジェクトを取得し、それをDTOデータで更新することができます。 DTOはかなり一般的な方法です。しかし、一般的にPUTを使用すると、すべてのフィールドがリクエストJSONに含まれている必要があります。 PUTは一般に_complete_アップデートです。部分的な更新はPATCHで行います。 –