背景:
前端同事传了两个参数给后台
前端参数 json
{
"taskSheet": {
"taskType": "SS,40288c566a4d8ffa016a4dffe156000e",
"_taskType": ["SS", "40288c566a4d8ffa016a4dffe156000e"]
}
}
后端接收实体类方式
taskSheet 对象只有taskType 属性 ,无_taskType
在controller 打印出来发现 taskType 的置是前端 _taskType的值
后端输出的值
taskType: ["SS","40288c566a4d8ffa016a4dffe156000e"]
我猜想 会不会 字符串格式化为对象时,是把 _taskType 和taskType 认为是同一个属性 ,_taskType 的值把 taskType的值 覆盖了
把前端参数 json 换一个位置
{
"taskSheet": {
"_taskType": ["SS", "40288c566a4d8ffa016a4dffe156000e"],
"taskType": "SS,40288c566a4d8ffa016a4dffe156000e"
}
}
后端输出的值
taskType: "SS","40288c566a4d8ffa016a4dffe156000e"
果然是覆盖了
解决方案:
把 1.2.47 升级最新版1.2.58即可,maven 坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>