@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
JSONObjectmap=newJSONObject();
map.put("id",1);
map.put("name","panlei");
System.out.println(map);
Useruser=JSON.toJavaObject(map,User.class);
System.out.println(user.getId());
试试这个<divclass="linenumber1index0alt2">{
@tomone:
您是在回答我的问题吗?
麻烦您测试一下我的代码。
确实是一个bug,问题已经修正,将会在下一个版本带上,预计在元旦后第一个星期。
https://github.com/alibaba/fastjson/commit/923e30e62c654fdf13c683338989cc17ccabcb8d
<spanstyle="font-size:10pt;">在此之前的一个解决办法是,添加一个setDatas方法
<aclass="referer"target="_blank">@wenshao
个人认为产生这个bug的关键是:需要setter方法时,不应该找到getter。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。