J'ai une classe simple:Jackson désérialisation - traitement des valeurs générées sans champs
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Endpoint.class)
public class Endpoint {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonView({View.Endpoint.class, View.User.class})
private Long id;
@NotNull
@NotEmpty(message = "Phone number is required.")
@JsonView({View.Endpoint.class, View.Call.class, View.User.class})
private String phoneNumber;
@JsonView({View.Endpoint.class, View.Call.class, View.User.class})
private String callerId;
@ManyToOne(optional = false)
@JsonView(View.Endpoint.class)
@ApiModelProperty(hidden = true)
private User user;
...
@Override
@JsonView({View.Endpoint.class, View.Call.class, View.User.class})
public String getUri() {
return EndpointController.BASE_PATH + "/" + getId();
}
}
je reçois l'erreur suivante lorsque vous essayez de désérialiser:
com.fasterxml.jackson.databind. exc.UnrecognizedPropertyException: Champ non reconnu "uri" (classe com.example.server.telephony.endpoint.Endpoint), non marqué ignable (5 propriétés connues: "id", "label", "callerId", " phoneNumber "," user "])
Comme l'URI est une valeur générée, il n'y a pas de champ à annoter avec @JsonIgnore
. Des suggestions sur ce qu'il faut faire dans ce cas?
Vous pourriez envisager [mix-ins] (https: // stackoverflow.com/a/38889775/1426227). –
Essayez d'annoter des getters au lieu des champs –
lorsque vous utilisez @JsonIdentityInfo, qu'est-ce qui est requis pour avoir @JsonView ?! – Generic