fastjson版本:fastjson2-2.0.38.jar
有问题的方法:JSONObject.parse(String str);
定位问题位置:JSONReaderUTF16.readFieldName();//该方法用来读取json字符串中的字段名
就是下图中标红的那一行代码,应该是少加了括号,+的优先级高于<<的优先级,我遇到的问题是这样的,字段一:c0=67,c1=89,c2=83;字段二:c0=67,c1=90,c2=83;字段一和字段二计算完之后nameValue0都是等于43515904,后面fastjson又根据nameValue0来判断是否取缓存,最终导致字段二的值覆盖了字段一的值
下图是fastjson从缓存取值的代码,因为字段一和字段二字段名长度都是11位,并且只有字段名的第二位字符不同,一个是Y(89),一个是Z(90),所以nameValue1的值是相同的,最终导致字段二的值覆盖了字段一的值