使用JSONObject.toJavaObject(JSON.parseObject("{"typeCharKey":"0"}", Type.class),对象内有Character属性转换异常。
public class Type{
private Character typeCharKey;
}
若json里typeCharKey的值是0之类的数字,就会抛出异常com.alibaba.fastjson.JSONException: can not cast to char, value : 0。因为会把"0"转成int类型,转换失败。
若json里typeCharKey的值是a之类的字符,就会转换正常。
1.2.71版本验证过都是正常的。
2条答案
按热度按时间oxosxuxt1#
请帮解决下该问题,升级版本被这个问题阻塞了。 @wenshao
1.2.75是OK的,1.2.76就出问题了。
看了下代码,是JavaBeanDeserializer里的代码改动导致的,截图如下:
原来会对value进行toJSONString后再传给parser,现在如果是String就跳过这个过程了。所以导致如果是char的'0'被后续解析成int的0,触发上面提到的”com.alibaba.fastjson.JSONException: can not cast to char, value : 0“异常。
提供一段简单的测试代码:
tjrkku2a2#
@wenshao 和楼主同样的问题,不升级无法解决漏洞,升级的话,toJavaObject报错