#1089 中的问题在1.2.30版本中修复,但是发现在1.2.58版本中又出现了。
#1089
问题描述:
json串中有两个属性,名称为ab和a_b,差别是一个有下划线而另一个没有,当解析对象时,如果对象的定义中只有ab一个属性,则解析出来的对象中ab的值可能会是json串中a_b属性的值,解析成哪个值跟json串中ab和a_b的顺序有关:
@test
public void parseTest() {
String json = "{"ab":123,"a_b":456}";
TestBean tb = JSON.parseObject(json, TestBean.class);
Assert.assertEquals(123, tb.getAb());
}
private static class TestBean {
private int ab;
public int getAb() {
return ab;
}
public void setAb(int ab) {
this.ab = ab;
}
}
结果
java.lang.AssertionError: expected:<123> but was:<456>
测试在1.2.58中有此问题。
1条答案
按热度按时间vwkv1x7d1#
这个问题只能通过禁用掉自动属性匹配来规避
原理可以参考https://blog.51cto.com/483181/1981575