Dapatkan konstanta enum dari nilai @JsonProperty
Oct 18 2020
Saya memiliki Enum yang ditandai dengan @JsonProperty untuk serialisasi / deserialisasi JSON dengan Jackson dan ingin mendapatkan nilai enum untuk String JsonProperty yang diberikan:
public enum TimeBucket {
@JsonProperty("Daily") DAY_BUCKET,
@JsonProperty("Weekly") WEEK_BUCKET,
@JsonProperty("Monthly") MONTH_BUCKET;
}
Metode yang diinginkan harus generik / statis (jadi tidak perlu menggandakannya di setiap enum) dan akan mengekstrak nilai enum dari salah satu JsonProperties:
public static <T extends Enum<T>> T getEnumFromJsonProperty(Class<T> enumClass, String jsonPropertyValue)
Jawaban
epol Oct 18 2020 at 16:21
Hasil yang diinginkan dapat dicapai melalui metode berikut:
public static <T extends Enum<T>> T getEnumValueFromJsonProperty(Class<T> enumClass, String jsonPropertyValue) {
Field[] fields = enumClass.getFields();
for (int i=0; i<fields.length; i++) {
if (fields[i].getAnnotation(JsonProperty.class).value().equals(jsonPropertyValue)) {
return Enum.valueOf(enumClass, fields[i].getName());
}
}
return null;
}
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'