2017-07-20 2 views
0

には、以下のPOJOを考えてみた場合:停止(POJO)直列化に必要な分野の一つがnullである

import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonInclude.Include; 

@JsonInclude(content=Include.NON_NULL) 
public class User { 
    @JsonProperty(required=true) 
    private String username; 
    private String dob; 
    private String email; 
    //  ... (getters and setters) 

} 

は、上記のPOJOのための次のサンプルJSONを検討してください。

{ 
    "username": "foo", 
    "email": "[email protected]", 
    "dob": "12/21/1994" 
} 

と私は割り当てた場合nullというフィールドは、シリアル化が行われている間は無視されます。私の質問に来る

、シリアライズを停止する方法は、必要なフィールドがnullあるとき、現在ジャクソンが故に値としてnullを考慮するため、これは@JsonProperty(required=true)で指定された契約に違反しない、(例外をスロー)があります

usernameフィールドは常に私のjsonに存在する必要があります。

私は@NotNulljavax.validation:validation-apiと使用しようとしましたが、動作していないようです。

spring-boot 1.5.2アプリケーションです。

P.S.
他の使用可能なAPIを提案したり、質問を編集して改善してください。

答えて

-1

あなたはこれがあなたを助ける何かリンクを使用することができます。

mapper.setSerializationInclusion(Include.NON_NULL); 

か:

@JsonInclude(Include.NON_NULL) 
    class User 
    { 
    private String username; 
    private String dob; 
    private String email; 
    ...... 
    ....... 
    } 
+0

直列化は行われます。 ユーザー名がnullの場合は、シリアル化を停止します。 –

関連する問題