scala使用fastjson之JSONObject cannot be cast to JSONArray

这件事一定要好好写一篇博客说一下,它整整折磨了我一天

最近在用spark写一个数据分析的项目,源文件是json,所以就使用了fastjson这个包,然后就到了噩梦时刻

其实本地都弄好了,运行也没什么问题,但是把jar包上传到master上运行,就会报题目中出的错,一开始,我以为是因为我使用了scala和java结合(其实我内心不觉得会是这个原因,但是没办法),我调用fastjson的代码是用java写的,主类和其他类都是用scala写的,然后出现这个错误后,没办法,我又用scala写了一遍fastjson的调用处理,结果不出意料,还是报错,我很早就查过相关博客,百度,google都用了,中外网站都看了,最后终于找到了一篇涉及一点的博客,这才解决了问题.下面说一下问题和解决:

其实报这个错,就是把JSONObject转成JSONArray不行,(我觉得是在scala中不行,因为我又写了一个测试jar包,都是java,jar包可以运行,我猜是因为fastjson这个包本身是java包,或者因为在集群上运行,总之这个问题我后面会再做测试解决,这里写说这个解决)

既然JSONObject转成JSONArray不行,那么我就不转了,遇到这个问题的代码大概上是这样的

JSONArray jsonArray = (JSONArray)jsonObject ; 

或者

JSONArray jsonArray = jsonObject.getJSONArray(mark) ;

这些或显式或隐式的都是将JSONObject转成JSONArray,这里我们不用这些,而是

String temp = jsonObject.getString(mark) ;

JSONArray jsonArray = JSON.parseArray(temp) ;

这样,我们就跳过了JSONObject转成JSONArray,虽然多了一句,但是可以解决问题

未完待续....

你可能感兴趣的:(spark,java,scala)