fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[BUG]class com.alibaba.fastjson2.JSONObject cannot be cast to class com.alibaba.fastjson.JSONObject (com.alibaba.fastjson2.JSONObject and com.alibaba.fastjson.JSONObject are in unnamed module of loader 'app')

Open gavinxzw opened this issue 2 months ago • 1 comments

问题描述

简要描述您碰到的问题。 使用兼容1.x进行javabean转换时出现不是预期的 com.alibaba.fastjson.JSONObject 而是变成com.alibaba.fastjson2.JSONObject 请看代码例子

环境信息

请填写以下信息:

  • OS信息:
  • JDK信息: jdk17
  • 版本信息:Fastjson2.0.51

重现步骤

如何操作可以重现该问题:

  1. 使用 xxx.xxx 方法
  2. 输入 ... 数据
  3. 出现 ... 错误
//可在此输入示例代码

package com.efuture.ocp.common;

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject;

public class JsonToBean {

public static void main(String[] args) {
    String jsonStr = "{\r\n"
            + "  \"id\":\"01\",\r\n"
            + "  \"data\":{\r\n"
            + "      \"key\":\"test\"\r\n"
            + "  }\r\n"
            + "}";
     JSONObject json = JSON.parseObject(jsonStr);
     Bean bean = JSON.toJavaObject(json, Bean.class);
     JSONObject o = (JSONObject)bean.getData();
    
}
class Bean {
    private String id;
    private Object data;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
    
}

}

期待的正确结果

对您期望发生的结果进行清晰简洁的描述。 期望的data应该解释成com.alibaba.fastjson.JSONObject

相关日志输出

请复制并粘贴任何相关的日志输出。 Exception in thread "main" java.lang.ClassCastException: class com.alibaba.fastjson2.JSONObject cannot be cast to class com.alibaba.fastjson.JSONObject (com.alibaba.fastjson2.JSONObject and com.alibaba.fastjson.JSONObject are in unnamed module of loader 'app') at com.efuture.ocp.common.JsonToBean.main(JsonToBean.java:17)

附加信息

如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。

gavinxzw avatar Jun 06 '24 10:06 gavinxzw