com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject相关的知识,希望对你有一定的参考价值。

参考技术A 这个错是在我本地运行的时候发现的,当时服务器上运行正常,运行环境都是JDK8:
com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject

后面我尝试切换JDK11,这时候报错信息更全面了,发现原来是RestartClassLoader的锅:
class com.alibaba.fastjson.JSONObject cannot be cast to class com.alibaba.fastjson.JSONObject (com.alibaba.fastjson.JSONObject is in unnamed module of loader 'app'; com.alibaba.fastjson.JSONObject is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @6725b320)

解决方法

根据 Spring Boot DevTools文档
可知:spring-devtools.properties 文件可以包含以restart.exclude 和restart.include 为前缀的属性。 include 属性会被“restart”类加载器加载,而 exclude 属性值会被“base”类加载器加载。该属性的值是应用于类路径的正则表达式模式

fastjson

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray

以上是关于com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject的主要内容,如果未能解决你的问题,请参考以下文章

FastJSON 常用操作

Json使用之FastJson

怎么把json字符串转换map

阿里的json处理--fastjson

fastjson

Fastjson常用方法