fastjson 字段名自动忽略下划线带来的重名字段冲突问题

5tmbdcev  于 2021-11-27  发布在  Java
关注(0)|答案(1)|浏览(423)

json:{
aid:"str_id",
a_id:12345
}

如果ATest.class是这样定义的:
class ATest{
int a_id;
}

JSON.parseObject(json, ATest.class);
解析异常

k3fezbri

k3fezbri1#

parse 默认开启了FieldSmartMatch, 处理key时会忽略掉下划线,因此在解析时,误把aid当做a_id进行解析,value应该为int但aid对应的value却是str,因此会出现类型转换异常。

解决办法:

  1. 类注解加上Feature.DisableFieldSmartMatch关闭智能匹配即可
@JSONType(parseFeatures = Feature.DisableFieldSmartMatch)
    public static class ATest {
        private int a_id;
    }
  1. 指定字段加上Feature.DisableFieldSmartMatch关闭智能匹配即可
public class ATest {
        @JSONField(parseFeatures = Feature.DisableFieldSmartMatch)
        private int a_id;
    }

相关问题