Gson解析Json 兼容性问题




最近在做项目,在galaxy S4上,使用gson解析json数据完全没问题,将jsonarray 成功解析到 ArrayList里面,可是在htc 2.3.7的机器(htc z710t)上面,就是解析不了,总是报错,类型转换不成功,最后发现,需要将ArrayList 改为LinkedList就可以解决这个蛋疼的问题。

但是接着,好一个更蛋疼的问题。我现在的json数据中,包含一个jsonarray,这个jsonarray具体的数据结构,是由外层的一个属性值指定的,为了解析这个结构,我把那个jsonarray直接映射为一个JSONArray 对象,然后根据属性,二次解析这个json对象,在S4上没问题,可是,在htc的上面,死活通过不了,类型识别不了,换成jsonobject什么的都不行。最后,测试了 阿里巴巴的fastjson,在htc上,可以正常解析数据,得以解决。但是在使用fastjson的时候,又遇到另外一个蛋疼的问题。不知道如何利用fastjson解析二维数组型的数据,我这边现在有个表格的数据返回,有多个行,一个行里有多个数据,是一个二维数组的形式,用fastjson无法下手,但是Gson 可以使用LinkedList<:LinkedList<MyEntity>>来嵌套,表达这种类型数据,而尝试fastjson,却无法如此嵌套解决。

最后,使用折衷的方案,用fastjon 映射一个含JSONAarry的对象,用Gson解析二维数据。

今天突然想起fastjson的一个方法,尝试了下,果然可以实现对二维数据的解析,前面的思路被Gson的方式给影响限制了

fastjson解析二维数组:

ArrayList<?> arrayList=JSON.parseObject(data.toString(), new TypeReference<ArrayList<ArrayList<RD_Data_Table>>>() {});

综合对比,还是觉得fastjson 更胜一筹,在版本的兼容性与数据的可读性上,指示fastjson的文档参考太少了,还有fastJson 要用arraylist,用linklist会报类型转换错误

你可能感兴趣的:(Gson解析Json 兼容性问题)