[BUG]toJavaObject的结果于parseObject结果不一致
- Dominant language
- Java
- Stars
- 4.4k
- Forks
- 613
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 6
Description
### 问题描述
*简要描述您碰到的问题。*
toJavaObject的结果于parseObject结果不一致。
### 环境信息
*请填写以下信息:*
- OS信息: []
- JDK信息: [JDK17]
- 版本信息:[2.0.34]
### 重现步骤
*如何操作可以重现该问题:*
```java
try {
// 报错: java.lang.ClassCastException: class cn.toint.tool.pojo.DTO.JdyApiDataFieldTypeDTO$SubformDTO cannot be cast to class cn.toint.xinri.pojo.mapper.XrSendMarketSmsByLoktongJdyMapper$UserMapper (cn.toint.tool.pojo.DTO.JdyApiDataFieldTypeDTO$SubformDTO and cn.toint.xinri.pojo.mapper.XrSendMarketSmsByLoktongJdyMapper$UserMapper are in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @20ee4442)
System.out.println(
// jdyApiDataWebhookDTO.getData() 是一个JSONObject对象,@RequestBody自动转换的对象.
jdyApiDataWebhookDTO.getData().toJavaObject(XrSendMarketSmsByLoktongJdyMapper.class).getUserList().get(0).getClass());
} catch (Exception e) {
log.error("toJavaObject err", e);
}
try {
// 正常
System.out.println(
JSON.parseObject(JSON.toJSONString(jdyApiDataWebhookDTO.getData()),
XrSendMarketSmsByLoktongJdyMapper.class).getUserList().get(0).getClass());
} catch (Exception e) {
log.error("parseObject err", e);
}
```
SubformDTO是UserMapper的父类。
### 期待的正确结果
*对您期望发生的结果进行清晰简洁的描述。*
### 相关日志输出
*请复制并粘贴任何相关的日志输出。*
#### 附加信息
*如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*
Contributor guide
Research direction
Start with the provided reproducer and compare JSONObject.toJavaObject with JSON.parseObject(JSON.toJSONString(...)) for XrSendMarketSmsByLoktongJdyMapper. Inspect how the nested UserMapper and its SubformDTO parent are converted; done means both paths produce the same nested Java type without ClassCastException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100