解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题

在读取json文件,返回页面json串时,发生如下错误

java.lang.ClassCastException: com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject

1.工具类

读取JSON文件转换成string的方法

    public static String ReadFile(String Path) {

        BufferedReader reader = null;

        String laststr = "";
        try {
            FileInputStream fileInputStream = new FileInputStream(Path);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
            reader = new BufferedReader(inputStreamReader);
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                laststr += tempString;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return laststr;
    }

调用类

    @RequestMapping(value = "menu")
    @ResponseBody
    public JSONObject menu(String id) {
        String url = HttpContext.current().getRequest().getServletContext().getRealPath("/");
        if (id.equals("1")) {
            url = url + "/static/json/images.json";
        } else if (id.equals("2")) {
            url = url + "/static/json/linksList.json";
        } 
        String output = FileUtils.ReadFile(url);
        System.out.println(output);
        JSONObject JSONObject =  JSON.parseObject(output);
        return JSONObject;
    }

2.错误点

工具类返回的是属于string类型,而不是JSONARRAY

3.解决方法

    String output = FileUtils.ReadFile(url);
    System.out.println(output);
    JSONArray jsonArray =  JSONObject.parseArray(output);
    return jsonArray;

使用JSONObject.parseArray(output)方法,将string转化为JSONAarray。

    原文作者:Fredia_Wang
    原文地址: https://www.jianshu.com/p/c89eb28f591f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞