我序列化了这种对象:
public class MyObject implements Serializable {
private String type;
...
private String[] target;
//getters and setters
}
但是当我试图反序列化MyObject
时,由于target
数组,我得到了一个错误。
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: java.util.ArrayList[0]->MyObject["target"])
...
如何反序列化数组
我终于找到问题了。我没看到班上有两个setter。Jackson可能用错了。
我只需要把注释@JsonSetter("target")
放在setter上面,它接受一个数组,告诉Jackson使用好的那个。
public void setTarget(String target) {
this.target = new String[]{target};
}
@JsonSetter("target")
public void setTarget(String[] target) {
this.target = target;
}