@JsonPropertyリネームオブジェクトフィールドをするときですか?

Hasaki :
@Data
public class Tests {
    @JsonProperty("comment")
    private String notes;
}

私は別の名前としてリネームフィールドに@JsonPropertyを使用する方法を知っているが、ときにオブジェクトのフィールドの名前を変更するのですか?たとえば、notes名前に変更されますcomment私は、ソースコードを読んで、そこにいくつかの相対的なコードであることを発見してみてくださいcom.fasterxml.jackson.databind.ser.std.BeanSerializerBase#serializeFieldscom.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()

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=332043&siteId=1