2
一个错误的枚举值,反序列化时不抛异常
一个错误的枚举值,反序列化时不抛异常
下面是测试案例代码:
public enum Code{
SUCCESS, FAILURE
}
public static class Result{
private int id;
private Code code;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Code getCode() {
return code;
}
public void setCode(Code code) {
this.code = code;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
public static void main(String[] args) {
String jsonText = "";
jsonText = "{\"code\":\"SUCCESS\",\"id\":1}";
System.out.println(JSON.parseObject(jsonText, Result.class));
jsonText = "{\"code\":\"FAILURE\",\"id\":2}";
System.out.println(JSON.parseObject(jsonText, Result.class));
jsonText = "{\"code\":\"ERROR\",\"id\":3}";
System.out.println(JSON.parseObject(jsonText, Result.class));
}
测试结果: {"code":"SUCCESS","id":1} {"code":"FAILURE","id":2} {"id":3}
1.2.40也发现了同样的问题,而且当结构化Json后就会抛JSONException异常,不结构化是不抛异常。
非法枚举值不抛异常问题,发现只有在JsonArray中对象的key和value之间有空格的话就会抛JSONException异常,没空格的话不抛异常,赋了null值。@wenshao
最初抛错的,后来改为不抛错,但改的不够彻底(比如你说的有空格的场景)。不抛错有什么问题?
@wenshao 感谢回复,这个问题会导致我们程序在处理有空格json和无空格json的行为不一致,在1.2.40版本中有没有什么方法可以使fastJson处理非法值时都抛异常?
希望能有个非法值抛异常的方式