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

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

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>(){});

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

  1. var map = JSON.parseObject("[\"\"]", new TypeReference<ArrayList<HashMap<String, Object>>>() {
  2. });
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>>(){});

zsohkypk

zsohkypk7#

2.0.41 已修复

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>>(){});

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

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

相关问题