Java 如果getter在json中抛出异常,如何排除字段?
我试图通过jackson将POJO连载。 下面提供了POJO类Java 如果getter在json中抛出异常,如何排除字段?,java,jackson,Java,Jackson,我试图通过jackson将POJO连载。 下面提供了POJO类 @JsonSerialize(using = CustomerSerializer.class) public class Customer { private String firstName; private String secondName; private String id; private String address; ........................... anoth
@JsonSerialize(using = CustomerSerializer.class)
public class Customer {
private String firstName;
private String secondName;
private String id;
private String address;
...........................
another setters and getters
...........................
public String getAddress() {
throw new RuntimeException();
}
}
方法getAddress引发任何异常,但在本例中为RuntimeException
下面提供的JsonSerializer必须序列化此类并排除getter引发异常的字段
public class CustomerSerializer extends JsonSerializer<Customer> {
public void serialize(Customer base, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
}
}
但是在prod中有太多的属性。可能是,它是否可能传递除address之外的所有字段?我想说,您可以告诉Jackosn忽略您知道会导致异常的属性,例如,通过类本身的
@JsonIgnore
或mixin,或者-因为您正在编写自定义序列化程序-只需在try-catch块中调用getter并相应地处理异常。如果您的目标是在封送和取消封送期间跳过一些字段,则只需放入JsonIgnoreProperties
并传入希望忽略的字段列表。这应该是干净和准确的。
jgen.writeStartObject();
jgen.writeNumberField("id", value.id);
jgen.writeStringField("itemName", value.itemName);
jgen.writeNumberField("owner", value.owner.id);
jgen.writeEndObject();