2017-06-15 6 views
0

いくつかのフィールドを除いてオブジェクトをシリアル化できるようにしようとしています。だから私はクラスがあると言う:@ JsonIgnorePropertiesでは@RequestBody経由で値を設定できませんか?

そして私はいくつかの目的のためにそれをシリアル化する必要がありますがパスワードフィールドを除いて。だから私は、コメントを追加しました:

@JsonIgnoreProperties({"password"}) //or 
@JsonIgnoreProperties(value = {"amountDelta"}, allowGetters = true, allowSetters = true) 

をその後、私は@RequestBodyを経由して私のクラスのインスタンスをラップしようとしている:

@RequestMapping(value = "test", method = POST, produces = "application/json") 
    public String testBodyWrapping(@RequestBody UserInfo userInfo) {  

     return userInfo.getPassword(); 
    } 

パスワードは常にnullです! (私は@JsonIgnorePropertiesアノテーションを削除してこれをテストしたが、うまくいきました)しかし、クラス「手作業」のインスタンスを期待どおりに作成し、passwordフィールドが出てこない。何が間違っていますか?

答えて

1

誰かがこのエンドポイントを使用すると、jsonテキストを送信します。あなたのメソッドをUserInfoクラスオブジェクトにデシリアライズします。このプロセスでは、デシリアライザはUserInfoクラスの各フィールドを設定しようとしています。最初に 'userName'フィールドを設定しようとしましたが、それ以降は 'パスワード'フィールドが無視され、設定されません。

+0

つまり、@RequestBodyはシリアル化を使用してリクエストを変換しますか?私は何か他の方法で望みを達成することはできますか? – Daria

+0

あなたはこのオブジェクトで何をしたいのですか?あなたは完全なオブジェクトを持っていて、次に何がありますか?あなたはパスワードフィールドを無視する必要がありますか? –

+0

私は 'RabbitMQ'メッセージとして送るべきオブジェクトを持っています。 (amount、id、refNameなど)いくつかのフィールドがありますが、リクエストには 'RabbitMQ'に送信すべきでないパスワードとシグネチャのパラメータも必要です。リクエストフォーマットも変更できません。多くのユーザー。 – Daria

関連する問題