[BUG] 类转换为Json字符串后,得到不属于类的属性
- Dominant language
- Java
- Stars
- 4.4k
- Forks
- 613
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 6
Description
### 问题描述

这是我的类属性,属性中taskByteStream的二进制数组包含的是一个类(名为reptileTask)的二进制序列化数据,当我要将这个类使用json时,结果如下:
```
{
"endTime": "nil",
"reptileTask": { //not exist!!!!!
"endTime": "nil",
"loadTask": {
"cacheSize": 0,
"running": false
},
"request": {
"liveType": "Online",
"liver": "1234",
"online": true,
"requestObj": {},
"roomId": "1234"
},
"startTime": "nil",
"taskId": "barrage-1234-1234",
"type": "already"
},
"startTime": "nil",
"taskByteStream": "rO0ABXNyACxvcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIudGFzay5SZXB0aWxlVGFzaxEhimWjwkcCAgAGTAAHZW5kVGltZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACGxvYWRUYXNrdAAkTG9yZy9leGFtcGxlL2NvcmUvbG9hZHRhc2svTG9hZFRhc2s7TAAHcmVxdWVzdHQANExvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9SZXB0aWxlUmVxdWVzdDtMAAlzdGFydFRpbWVxAH4AAUwABnRhc2tJZHEAfgABTAAEdHlwZXQALUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvdGFzay9UYXNrU3RhdHVzO3hwdAADbmlsc3IANW9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suaW1wbC5Eb3V5dUhvdE1vZHVsZUxvYWRUYXNr31RCvKYJQ64CAAB4cgArb3JnLmV4YW1wbGUuY29yZS5sb2FkdGFzay5Ib3RNb2R1bGVMb2FkVGFzay+YkJNyxpkdAgABTAAKZmluaXNoRmxhZ3QAOExvcmcvZXhhbXBsZS9jb3JlL2xvYWR0YXNrL0hvdE1vZHVsZUxvYWRUYXNrJEZpbmlzaEZsYWc7eHIAKG9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suQ29tbW9uTG9hZFRhc2u3nrfqtop1ugIAAHhwfnIANm9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suSG90TW9kdWxlTG9hZFRhc2skRmluaXNoRmxhZwAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQACk5PVF9GSU5JU0hzcgA5b3JnLmV4YW1wbGUuY29yZS50YXNrY2VudGVyLnJlcXVlc3QuQmFycmFnZVJlcHRpbGVSZXF1ZXN0MJtXzIJ26DcCAANMAAhsaXZlVHlwZXQAQUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9MaXZlUmVwdGlsZVJlcXVlc3QkTGl2ZVR5cGU7TAAFbGl2ZXJxAH4AAUwABnJvb21JZHEAfgABeHIAMm9yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci5yZXF1ZXN0LlJlcHRpbGVSZXF1ZXN0wF+9xyx6EGECAAJMAAhjYWxsYmFja3QAG0xvcmcvZXhhbXBsZS9jb3JlL0NhbGxiYWNrO0wACnJlcXVlc3RPYmp0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyACFqYXZhLmxhbmcuaW52b2tlLlNlcmlhbGl6ZWRMYW1iZGFvYdCULCk2hQIACkkADmltcGxNZXRob2RLaW5kWwAMY2FwdHVyZWRBcmdzdAATW0xqYXZhL2xhbmcvT2JqZWN0O0wADmNhcHR1cmluZ0NsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMABhmdW5jdGlvbmFsSW50ZXJmYWNlQ2xhc3NxAH4AAUwAHWZ1bmN0aW9uYWxJbnRlcmZhY2VNZXRob2ROYW1lcQB+AAFMACJmdW5jdGlvbmFsSW50ZXJmYWNlTWV0aG9kU2lnbmF0dXJlcQB+AAFMAAlpbXBsQ2xhc3NxAH4AAUwADmltcGxNZXRob2ROYW1lcQB+AAFMABNpbXBsTWV0aG9kU2lnbmF0dXJlcQB+AAFMABZpbnN0YW50aWF0ZWRNZXRob2RUeXBlcQB+AAF4cAAAAAZ1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAAAdnIAK29yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci50YXNrLlRhc2tSZWNvcmQAAAAAAAAAAAAAAHhwdAAZb3JnL2V4YW1wbGUvY29yZS9DYWxsYmFja3QACGNhbGxiYWNrdAAVKExqYXZhL2xhbmcvT2JqZWN0OylWdAArb3JnL2V4YW1wbGUvY29yZS90YXNrY2VudGVyL3Rhc2svVGFza1JlY29yZHQAFmxhbWJkYSRtYWluJGVhOWNiYjMxJDFxAH4AIHEAfgAgc3IAGG9yZy5leGFtcGxlLmJlYW4uQmFycmFnZdrC84Bls3NbAgAETAAHY29udGVudHEAfgABTAADbWlkcQB+AAFMAAl0aW1lSW5kZXh0ABBMamF2YS9sYW5nL0xvbmc7TAAIdGltZVJlYWxxAH4AJHhwcHBwcH5yAD9vcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIucmVxdWVzdC5MaXZlUmVwdGlsZVJlcXVlc3QkTGl2ZVR5cGUAAAAAAAAAABIAAHhxAH4ADXQABk9ubGluZXQABDEyMzRxAH4AKXEAfgAGdAARYmFycmFnZS0xMjM0LTEyMzR+cgArb3JnLmV4YW1wbGUuY29yZS50YXNrY2VudGVyLnRhc2suVGFza1N0YXR1cwAAAAAAAAAAEgAAeHEAfgANdAAHQWxyZWFkeQ==",
"taskId": "barrage-1234-1234"
}
```
结果里面可知,我的类里面只有四个属性,但是这里却多出了一个名为`reptileTask`的属性
### 环境信息
*请填写以下信息:*
- OS信息: [e.g.:Win10]
- JDK信息: [e.g.:Openjdk 11.0.13]
- 版本信息:[e.g.:Fastjson2 0.26]
### 重现步骤
1. 编写两个类,一个json需要序列化的类A,一个java需要序列化的类B
2. 在类A中添加一个byte数组,将B的序列化结果存入byte中
3. 进行JSONObject.toString(A)
4. 出现错误,可以看到结果包含了类B的信息
### 期待的正确结果
应该不包含reptiletask这一项,如下图
```
{
"endTime": "nil",
"startTime": "nil",
"taskByteStream": "rO0ABXNyACxvcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIudGFzay5SZXB0aWxlVGFzaxEhimWjwkcCAgAGTAAHZW5kVGltZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACGxvYWRUYXNrdAAkTG9yZy9leGFtcGxlL2NvcmUvbG9hZHRhc2svTG9hZFRhc2s7TAAHcmVxdWVzdHQANExvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9SZXB0aWxlUmVxdWVzdDtMAAlzdGFydFRpbWVxAH4AAUwABnRhc2tJZHEAfgABTAAEdHlwZXQALUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvdGFzay9UYXNrU3RhdHVzO3hwdAADbmlsc3IANW9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suaW1wbC5Eb3V5dUhvdE1vZHVsZUxvYWRUYXNr31RCvKYJQ64CAAB4cgArb3JnLmV4YW1wbGUuY29yZS5sb2FkdGFzay5Ib3RNb2R1bGVMb2FkVGFzay+YkJNyxpkdAgABTAAKZmluaXNoRmxhZ3QAOExvcmcvZXhhbXBsZS9jb3JlL2xvYWR0YXNrL0hvdE1vZHVsZUxvYWRUYXNrJEZpbmlzaEZsYWc7eHIAKG9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suQ29tbW9uTG9hZFRhc2u3nrfqtop1ugIAAHhwfnIANm9yZy5leGFtcGxlLmNvcmUubG9hZHRhc2suSG90TW9kdWxlTG9hZFRhc2skRmluaXNoRmxhZwAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQACk5PVF9GSU5JU0hzcgA5b3JnLmV4YW1wbGUuY29yZS50YXNrY2VudGVyLnJlcXVlc3QuQmFycmFnZVJlcHRpbGVSZXF1ZXN0MJtXzIJ26DcCAANMAAhsaXZlVHlwZXQAQUxvcmcvZXhhbXBsZS9jb3JlL3Rhc2tjZW50ZXIvcmVxdWVzdC9MaXZlUmVwdGlsZVJlcXVlc3QkTGl2ZVR5cGU7TAAFbGl2ZXJxAH4AAUwABnJvb21JZHEAfgABeHIAMm9yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci5yZXF1ZXN0LlJlcHRpbGVSZXF1ZXN0wF+9xyx6EGECAAJMAAhjYWxsYmFja3QAG0xvcmcvZXhhbXBsZS9jb3JlL0NhbGxiYWNrO0wACnJlcXVlc3RPYmp0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyACFqYXZhLmxhbmcuaW52b2tlLlNlcmlhbGl6ZWRMYW1iZGFvYdCULCk2hQIACkkADmltcGxNZXRob2RLaW5kWwAMY2FwdHVyZWRBcmdzdAATW0xqYXZhL2xhbmcvT2JqZWN0O0wADmNhcHR1cmluZ0NsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMABhmdW5jdGlvbmFsSW50ZXJmYWNlQ2xhc3NxAH4AAUwAHWZ1bmN0aW9uYWxJbnRlcmZhY2VNZXRob2ROYW1lcQB+AAFMACJmdW5jdGlvbmFsSW50ZXJmYWNlTWV0aG9kU2lnbmF0dXJlcQB+AAFMAAlpbXBsQ2xhc3NxAH4AAUwADmltcGxNZXRob2ROYW1lcQB+AAFMABNpbXBsTWV0aG9kU2lnbmF0dXJlcQB+AAFMABZpbnN0YW50aWF0ZWRNZXRob2RUeXBlcQB+AAF4cAAAAAZ1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAAAdnIAK29yZy5leGFtcGxlLmNvcmUudGFza2NlbnRlci50YXNrLlRhc2tSZWNvcmQAAAAAAAAAAAAAAHhwdAAZb3JnL2V4YW1wbGUvY29yZS9DYWxsYmFja3QACGNhbGxiYWNrdAAVKExqYXZhL2xhbmcvT2JqZWN0OylWdAArb3JnL2V4YW1wbGUvY29yZS90YXNrY2VudGVyL3Rhc2svVGFza1JlY29yZHQAFmxhbWJkYSRtYWluJGVhOWNiYjMxJDFxAH4AIHEAfgAgc3IAGG9yZy5leGFtcGxlLmJlYW4uQmFycmFnZdrC84Bls3NbAgAETAAHY29udGVudHEAfgABTAADbWlkcQB+AAFMAAl0aW1lSW5kZXh0ABBMamF2YS9sYW5nL0xvbmc7TAAIdGltZVJlYWxxAH4AJHhwcHBwcH5yAD9vcmcuZXhhbXBsZS5jb3JlLnRhc2tjZW50ZXIucmVxdWVzdC5MaXZlUmVwdGlsZVJlcXVlc3QkTGl2ZVR5cGUAAAAAAAAAABIAAHhxAH4ADXQABk9ubGluZXQABDEyMzRxAH4AKXEAfgAGdAARYmFycmFnZS0xMjM0LTEyMzR+cgArb3JnLmV4YW1wbGUuY29yZS50YXNrY2VudGVyLnRhc2suVGFza1N0YXR1cwAAAAAAAAAAEgAAeHEAfgANdAAHQWxyZWFkeQ==",
"taskId": "barrage-1234-1234"
}
```
### 相关日志输出
无
#### 附加信息
无
Contributor guide
Research direction
Start by reproducing the issue with the described classes A and B: serialize B into A's byte array, then call JSONObject.toString(A). Trace the serialization path for byte arrays and verify that the output contains only A's declared properties, including taskByteStream, without reptileTask. No source file or test is identified in the issue.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100