fastjson 反序列化枚举,错误的枚举值不抛异常,版本:1.2.36

pprl5pva  于 2021-11-27  发布在  Java
关注(0)|答案(6)|浏览(456)

一个错误的枚举值,反序列化时不抛异常

bmvo0sr5

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}

cfh9epnr

cfh9epnr2#

1.2.40也发现了同样的问题,而且当结构化Json后就会抛JSONException异常,不结构化是不抛异常。

dw1jzc5e

dw1jzc5e3#

非法枚举值不抛异常问题,发现只有在JsonArray中对象的key和value之间有空格的话就会抛JSONException异常,没空格的话不抛异常,赋了null值。@wenshao

pobjuy32

pobjuy324#

最初抛错的,后来改为不抛错,但改的不够彻底(比如你说的有空格的场景)。不抛错有什么问题?

qlckcl4x

qlckcl4x5#

@wenshao 感谢回复,这个问题会导致我们程序在处理有空格json和无空格json的行为不一致,在1.2.40版本中有没有什么方法可以使fastJson处理非法值时都抛异常?

puruo6ea

puruo6ea6#

希望能有个非法值抛异常的方式

相关问题