2017-01-03 74 views
0

我正在使用spring MVC开发一个REST API。 其中一项服务用于获取某个请求对象的列车详细信息。 Request对象:Json序列化接受布尔变量的数值输入

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

我已经使用以下请求来测试服务。

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

我已经看到,0是序列化并分配给departOnly假。还有我与其他测试比0,并获得departOnly为真。 但我不想为布尔变量输入数值。 帮助我如何在Spring验证或Java中限制在已定义的布尔变量中只有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); 
    } 
    } 
.................. 

}