JSONObject.toJavaObject()可能有bug----急!!!
@wenshao 你好,想跟你请教个问题:急!!!
下面的代码执行报错,个人认为有JSONObject.toJavaObject()有bug:
public class JsonBean {
public static void main(String[] args) {
String json = "{"datas":["a","b"]}";
JSONObject o = JSON.parseObject(json);
o.toJavaObject(JsonBean.class);
}
private List<String> datas = new ArrayList<String>();
public List<String> getDatas() {
return datas;
}
}
调试发现是toJavaObject()想获取getDatas()方法的第一个参数类型,导致数组越界访问。
fastjson版本1.2.21,1.2.23
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
@wenshao
个人认为产生这个bug的关键是:需要setter方法时,不应该找到getter。
确实是一个bug,问题已经修正,将会在下一个版本带上,预计在元旦后第一个星期。
https://github.com/alibaba/fastjson/commit/923e30e62c654fdf13c683338989cc17ccabcb8d
在此之前的一个解决办法是,添加一个setDatas方法
@tomone:
您是在回答我的问题吗?
麻烦您测试一下我的代码。
{
试试这个
JSONObject map = new JSONObject();
map.put("id", 1);
map.put("name", "panlei");
System.out.println(map);
User user = JSON.toJavaObject(map, User.class);
System.out.println(user.getId());