我有一个简单的课程:
@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();
}
}
尝试反序列化时出现以下错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 无法识别的字段“uri”(类 com.example.server.telephony.endpoint.Endpoint),未标记为 可忽略的(5个已知属性:“id”,“label”,“callerId”, “phoneNumber”,“user”])
由于URI是生成的值,因此没有要使用@JsonIgnore
进行批注的字段。关于在这种情况下该怎么做的任何建议?
答案 0 :(得分:0)
使用Endpoint
@JsonIgnoreProperties(ignoreUnknown = true)
课程添加注释
或者使用以下选项配置ObjectMapper
以影响使用此Mapper反序列化的所有POJO:
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);