一个错误的枚举值,反序列化时不抛异常
bmvo0sr51#
下面是测试案例代码:
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}
cfh9epnr2#
1.2.40也发现了同样的问题,而且当结构化Json后就会抛JSONException异常,不结构化是不抛异常。
dw1jzc5e3#
非法枚举值不抛异常问题,发现只有在JsonArray中对象的key和value之间有空格的话就会抛JSONException异常,没空格的话不抛异常,赋了null值。@wenshao
pobjuy324#
最初抛错的,后来改为不抛错,但改的不够彻底(比如你说的有空格的场景)。不抛错有什么问题?
qlckcl4x5#
@wenshao 感谢回复,这个问题会导致我们程序在处理有空格json和无空格json的行为不一致,在1.2.40版本中有没有什么方法可以使fastJson处理非法值时都抛异常?
puruo6ea6#
希望能有个非法值抛异常的方式
6条答案
按热度按时间bmvo0sr51#
下面是测试案例代码:
测试结果:
{"code":"SUCCESS","id":1}
{"code":"FAILURE","id":2}
{"id":3}
cfh9epnr2#
1.2.40也发现了同样的问题,而且当结构化Json后就会抛JSONException异常,不结构化是不抛异常。
dw1jzc5e3#
非法枚举值不抛异常问题,发现只有在JsonArray中对象的key和value之间有空格的话就会抛JSONException异常,没空格的话不抛异常,赋了null值。@wenshao
pobjuy324#
最初抛错的,后来改为不抛错,但改的不够彻底(比如你说的有空格的场景)。不抛错有什么问题?
qlckcl4x5#
@wenshao 感谢回复,这个问题会导致我们程序在处理有空格json和无空格json的行为不一致,在1.2.40版本中有没有什么方法可以使fastJson处理非法值时都抛异常?
puruo6ea6#
希望能有个非法值抛异常的方式