我有一个类似的课程:
Class myClass {
@JsonProperty("status")
boolean status;
public boolean getStatus() {
return status;
}
public boolean setStatus(boolean status) {
this.status = status;
}
public boolean setStatus(String status) {
this.status = "free".equals(status);
}
}
我想知道我可以使用Jackson解除这些JSON文档的编组:
{
"status" = true
}
{
"status" = "free"
}
我认为通过创建两个设置器将绰绰有余,但我认为还需要另一个指令。
任何帮助都非常欢迎。
编辑:部分解决方案
通过在一个设置器中设置JsonProperty,它可以在一种情况下工作,但我希望同时使用两者。
答案 0 :(得分:2)
只是一个想法。那代替接受一个对象类型呢!! 然后,您可以执行instanceOf检查并进行相应设置。
public class MyClass {
@JsonProperty("status")
Object status;
public boolean isStatus() {
return Boolean.valueOf(status.toString());
}
public void setStatus(Object status) {
if(status instanceof Boolean){
this.status = status;
}else if(status instanceof String){
this.status = status.toString().equals("free");
}
}
@Override
public String toString() {
return "MyClass [status=" + status.toString() + "]";
}
}
String jsonString_1 = "{ \"status\":true}";
String jsonString_2 = "{ \"status\":\"free\"}";
ObjectMapper objectMapper = new ObjectMapper();
MyClass myObj_1 = objectMapper.readValue(jsonString_1.getBytes(), MyClass.class);
MyClass myObj_2 = objectMapper.readValue(jsonString_2.getBytes(), MyClass.class);
System.out.println(myObj_1);
System.out.println(myObj_2);
MyClass [status=true]
MyClass [status=true]