FastJson @JSONField 源码解析

 找到TypeUtils,可以看到有如**解。

  •  
  • FastJson @JSONField 源码解析
  • 这个时TypeUtils 的computeGetters方法,在这个方法可以看到对JSONField 注解的处理。
      JSONField fieldAnnotation = null;
                if(field != null){
                    fieldAnnotation = field.getAnnotation(JSONField.class);
                    if(fieldAnnotation != null){
                        if(!fieldAnnotation.serialize()){
                            continue;
                        }
                        ordinal = fieldAnnotation.ordinal();
                        serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());
                        parserFeatures = Feature.of(fieldAnnotation.parseFeatures());
                        if(fieldAnnotation.name().length() != 0){
                            fieldAnnotationAndNameExists = true;
                            propertyName = fieldAnnotation.name();
                            if(aliasMap != null){
                                propertyName = aliasMap.get(propertyName);
                                if(propertyName == null){
                                    continue;
                                }
                            }
                        }
                        if(fieldAnnotation.label().length() != 0){
                            label = fieldAnnotation.label();
                        }
                    }
                }
  • 可以看到类属性上这个注解的解析,获取注解。得到注解上name的值,这个值就作为json格式化的属性名。
  • 通过找到源码,打断点进行一步步调试就可以排查问题。比如对is开头的方法的特殊处理。
  • FastJson @JSONField 源码解析