fastjson 1.2.83 版本使用 JSON.parseObject 方法转换字符串时,会报OOM

kdfy810k  于 5个月前  发布在  SEO
关注(0)|答案(8)|浏览(134)

fastjson 版本 :

com.alibaba
fastjson
1.2.83

复现bug代码如下:
List<Map<String,Object>> map = JSON.parseObject("[""]",new TypeReference<>(){});

yuvru6vn

yuvru6vn1#

[""]格式不太对,[{}]这样才对,TypeReference要指定泛型吧。

tjjdgumg

tjjdgumg2#

[""]格式不太对,[{}]这样才对,TypeReference要指定泛型吧。

格式不对你可以报错,报格式不正确。而你报个OOM?你觉得合理吗?

sf6xfgos

sf6xfgos3#

[""]格式不太对,[{}]这样才对,TypeReference要指定泛型吧。

格式不对你可以报错,报格式不正确。而你报个OOM?你觉得合理吗?

这样一行代码,怎么可能导致OOM!TypeReference不指定泛型,连编译都过不了,就别说运行了。
我指定泛型之后,编译通过,运行正常,你应该找错原因了
List<Map<String,Object>> map = JSON.parseObject("[\"\"]",new TypeReference<ArrayList>(){});

zysjyyx4

zysjyyx44#

[""]格式不太对,[{}]这样才对,TypeReference要指定泛型吧。

格式不对你可以报错,报格式不正确。而你报个OOM?你觉得合理吗?

这样一行代码,怎么可能导致OOM!TypeReference不指定泛型,连编译都过不了,就别说运行了。 我指定泛型之后,编译通过,运行正常,你应该找错原因了 List<Map<String,Object>> map = JSON.parseObject("[\"\"]",new TypeReference<ArrayList>(){});

你试试下面这个,确定是比较有问题的。

var map = JSON.parseObject("[\"\"]", new TypeReference<ArrayList<HashMap<String, Object>>>() {
        });
gopyfrb3

gopyfrb35#


问题确实存在,有人知道这个 BUG 什么时候修复了吗? ----------- The problem does exist, does anyone know when this bug will be fixed?

wnrlj8wa

wnrlj8wa6#


问题确实存在,有人知道这个 BUG 什么时候修复了吗? ----------- The problem does exist, does anyone know when this bug will be fixed?

虽然复现了,楼主写法好像不对,泛型应该是这样写? List<String> map = JSON.parseObject("[\"\"]",new TypeReference<List<String>>(){});

pgpifvop

pgpifvop8#


问题确实存在,有人知道这个 BUG 什么时候修复了吗? ----------- The problem does exist, does anyone know when this bug will be fixed?

虽然复现了,楼主写法好像不对,泛型应该是这样写? List<String> map = JSON.parseObject("[\"\"]",new TypeReference<List<String>>(){});

应该是复杂泛型(多层套娃)导致的,简单泛型是不会有问题的。

// 简单泛型ArrayList正常
ArrayList<HashMap<String, Object>> map = JSON.parseObject("[\"\"]", new TypeReference<ArrayList>(){});
// 复杂泛型ArrayList<HashMap<String, Object>>会报异常
ArrayList<HashMap<String, Object>> map = JSON.parseObject("[\"\"]", new TypeReference<ArrayList<HashMap<String, Object>>>(){});

相关问题