2017-01-03 10 views
0

私はSpring MVCを使用してREST APIを開発しています。 サービスの1つは、一部の要求オブジェクトで列車の詳細を取得するために使用されます。 Requestオブジェクト:Json Serializationはブール変数の数値入力を受け入れる

TrainRequest implements Serializable { 
    private static final long serialVersionUID = 6280494678832642677L; 
    private String travelMonth; 
    private boolean departOnly; 
} 

私は、サービスをテストするための要求の下に使用されてきました。

{ 
"travelMonth": "DEC2016", 
"departOnly":0 
} 

私は0は、私が0以外でテストされ、departOnly真として得た偽.Alsoとしてシリアル化され、departOnlyに割り当てられていることを見てきました。 しかし、私はブール変数の数値入力をしたくないです。 Springのバリデーションを制限する方法や、定義されたブール値でtrue/falseのみを持つようにする方法を教えてください。

答えて

0
TrainRequest implements Serializable { 
    private static final long serialVersionUID = 6280494678832642677L; 
    private String travelMonth; 
    private int departOnlyInt;   // Serialized instead of departOnly 
    private transient boolean departOnly; // Not serialized 

............................ 
private void writeObject(ObjectOutputStream o) throws IOException { 
    departOnlyInt = departOnly ? 1 : 0; 
    o.defaultWriteObject(); 
    } 

    private void readObject(ObjectInputStream o) throws IOException, 
      ClassNotFoundException { 
    o.defaultReadObject(); 
    switch(departOnlyInt) { 
     case 0: 
       departOnly = false; break; 

     case 1: 
       departOnly = true; break; 

     default: 
       throw new IOException ("Invalid boolean: " + departOnlyInt); 
    } 
    } 
.................. 

}

関連する問題