Я добавил перечисление в класс, и класс помечен аннотациями Джексона.Я не хочу, чтобы этот enum учитывался при сериализации или десериализации.Нужно ли добавлять какие-либо специальные теги, чтобы игнорировать перечисление, как мы делаем @JsonIgnore для методов или переменных?
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "name", "license", "description" })
public class Car {
@JsonProperty("name")
private String name;
@JsonProperty("license")
private String license;
@JsonProperty("description")
private String description;
@JsonProperty("name")
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
@JsonProperty("license")
public String getLicense() {
return license;
}
@JsonProperty("license")
public void setLicense(String license) {
this.license = license;
}
@JsonProperty("description")
public String getDescription() {
return description;
}
@JsonProperty("description")
public void setDescription(String description) {
this.description = description;
}
@JsonIgnore
public Type getType() {
if(this.description.contains("electric")) {
return Type.ELECTRIC;
}else if(this.description.contains("diesel")) {
return Type.DIESEL;
}else {
return Type.UNKNOWN;
}
}
public enum Type {
ELECTRIC, DIESEL, GASOLINE, HYDROGEN, BIOFUEL, UNKNOWN
}
}
Вот некоторый код для использования этого класса.Работает нормально.
public class EnumJsonTester {
public static void main(String [] args) throws Exception {
String json = "{\r\n" +
" \"name\": \"Tesla Model S\",\r\n" +
" \"license\": \"1234\",\r\n" +
" \"description\": \"electric powered vehicle.\"\r\n" +
"}";
Car tesla = Utils.jsonToObject(json, Car.class);
System.out.println("My Car: " + tesla.getType());
}
}