Spring が提供する @ResponseBody
を使用すると、json オブジェクトを返すことができて非常に便利です。
しかし、問題の 1 つは、@ResponseBody
が empty(""
) を返すか null を返すかを判断できない場合があるということです。質問者は大雑把な観察をしました。 Javaの文字列がnull
であっても""
であっても、jsonを通じて返される最終結果は""
であるようですが、オブジェクトの場合はになります。 int型データの場合はnull
、0
が返されます。
上記の結論は正しいでしょうか?
これは、pojo のインスタンス変数の型と使用される JSON ライブラリに関連します (JSON ライブラリは null の処理方法を設定できます)
1. POJO を返すとき、コード、メッセージ、データを含む JSONResult クラスにカプセル化するなど、ビジネス データをカプセル化できます。データはビジネス データ (つまり、POJO インスタンス)、コードはステータスです。コード、msg は説明です。このように、空の場合はエラー コードを返すだけで、返される結果はインターフェイスの呼び出し元が処理するのに便利な json 形式のデータとして使用できます。 。
2. JSON 形式のデータを直接返します。fastjson または net.sf.json を使用して JSONObject オブジェクトを直接返し、JSONObject オブジェクトにビジネス データを手動または自動で入力します。
Jackon ライブラリを使用する場合、pojo に @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) アノテーションを付けることができます。この場合、特定の属性値が null または "" の場合、シリアル化するときにキーは含まれません。ジェソン