[解決済み] Spring MVCからJSONで送信する際にJavaオブジェクトのフィールドを動的に無視させる
2022-06-18 11:29:31
質問
私はhibernateのために、次のようなモデルクラスを持っています。
@Entity
@Table(name = "user", catalog = "userdb")
@JsonIgnoreProperties(ignoreUnknown = true)
public class User implements java.io.Serializable {
private Integer userId;
private String userName;
private String emailId;
private String encryptedPwd;
private String createdBy;
private String updatedBy;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "UserId", unique = true, nullable = false)
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Column(name = "UserName", length = 100)
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name = "EmailId", nullable = false, length = 45)
public String getEmailId() {
return this.emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
@Column(name = "EncryptedPwd", length = 100)
public String getEncryptedPwd() {
return this.encryptedPwd;
}
public void setEncryptedPwd(String encryptedPwd) {
this.encryptedPwd = encryptedPwd;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
@Column(name = "UpdatedBy", length = 100)
public String getUpdatedBy() {
return this.updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
}
Spring MVCコントローラで、DAOを使用して、オブジェクトを取得し、JSONオブジェクトとして返すことができます。
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET)
@ResponseBody
public User getUser(@PathVariable Integer userId) throws Exception {
User user = userService.get(userId);
user.setCreatedBy(null);
user.setUpdatedBy(null);
return user;
}
}
ビュー部分はAngularJSを使っているので、以下のようなJSONが取得されます。
{
"userId" :2,
"userName" : "john",
"emailId" : "[email protected]",
"encryptedPwd" : "Co7Fwd1fXYk=",
"createdBy" : null,
"updatedBy" : null
}
暗号化されたパスワードを設定しない場合は、そのフィールドもNULLに設定します。
しかし、私はこのように、すべてのフィールドをクライアント側に送信したいわけではありません。もし、password、updatedby、createdbyの各フィールドを送信したくない場合、私の結果のJSONは以下のようになります。
{
"userId" :2,
"userName" : "john",
"emailId" : "[email protected]"
}
クライアントに送信したくないフィールドのリストは、他のデータベーステーブルから来るものです。したがって、それはログインしているユーザーに基づいて変更されます。 どのようにそれを行うことができますか?
私はあなたが私の質問を得たことを願っています。
どのように解決するのですか?
を追加します。
@JsonIgnoreProperties("fieldname")
アノテーションをPOJOに追加します。
または
@JsonIgnore
を、JSON のデシリアライズ時に無視したいフィールドの名前の前に記述します。例
@JsonIgnore
@JsonProperty(value = "user_password")
public String getUserPassword() {
return userPassword;
}
関連
-
java.util.NoSuchElementException 原因解析と解決方法
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
プロジェクトの依存関係を解決できなかった 解決
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
Javaエラーメッセージがenclosingクラスでない
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
HttpClientがGZIP形式でない場合の対処法
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
ローカルリソースのロードが許可されていない場合の解決策
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
をインスタンス化することができません。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
自動配線された依存性のインジェクションに失敗しました。
-
[解決済み] シリアライズ時のみ@JsonIgnoreを使用し、デシリアライズ時には使用しない。