1、结论
fastjson自1.2.57版本开始,存在该问题,即json中存在相同不区分大小写的字段,在转换为BO时,fastjson会优先转换第一个。之前的版本是优先转换名称一致的,麻烦考虑下是否保持和原来相同的逻辑
2、json报文数据
{"polsubamnt":"100","polSubAmnt":"200",}
3、bo数据
public class TestBO{
private String polSubAmnt;
public String getPolSubAmnt(){
return polSubAmnt;
}
public void setPolSubAmnt(String polsubamnt){
this.polSubAmnt=polsubamnt;
}
}
4、验证程序
/**
* fastjson大小写转换问题验证
*/
@Test
public void contextLoads() {
String jsonData="{\"polsubamnt\":\"100\",\"polSubAmnt\":\"200\",}";
TestBO testBO = JSON.parseObject(jsonData,TestBO.class);
System.out.println("转换后的值为:"+testBO.getPolSubAmnt());
}
5、升级版本前
转换后的值为:100
6、升级版本后
转换后的值为:200
1条答案
按热度按时间hpcdzsge1#
@leopard3699
今天也注意到这个问题了,值得关注,这种case我理解是可以被利用的,试想如果用户输入可以覆盖一个代码控制的字段。/eye cc @wenshao