Hasaki :
@Data
public class Tests {
@JsonProperty("comment")
private String notes;
}
私は別の名前としてリネームフィールドに@JsonPropertyを使用する方法を知っているが、ときにオブジェクトのフィールドの名前を変更するのですか?たとえば、notes
名前に変更されますcomment
。私は、ソースコードを読んで、そこにいくつかの相対的なコードであることを発見してみてくださいcom.fasterxml.jackson.databind.ser.std.BeanSerializerBase#serializeFields
とcom.fasterxml.jackson.databind.ser.BeanPropertyWriter#serializeAsField
。しかし、フィールドが既にとして名前が変更されましたcomment
。だからここで行い@JsonProperty
リネームオブジェクトフィールドには?
i.bondarenko:
プロパティ名の解決はで発生com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector
しているこのフラグメントを見て:
public PropertyName findNameForDeserialization(Annotated a) {
...
// Get JsonProperty value for the field
JsonProperty pann = (JsonProperty)this._findAnnotation(a, JsonProperty.class);
if (pann != null) {
// here we are !!!
return PropertyName.construct(pann.value());
} else {
return !useDefault && !this._hasOneOf(a, ANNOTATIONS_TO_INFER_DESER) ? null : PropertyName.USE_DEFAULT;
}
}
それは中に起こるすべて POJOPropertiesCollector.collectAll()