开发者社区> 问答> 正文

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

展开
收起
爱吃鱼的程序员 2020-06-08 19:43:42 1820 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    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。

    2020-06-08 19:43:56
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载