在讀取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。