Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
This is something that could go really wrong. I remember using this, and it was fine initially, until the enum in question evolved, and the ordinals changed, so the values didn't correspond anymore...
Answer
#2: Post edited
This is something that could go really wrong. I remember using this, and it was fine initially, until the `enum` in question _evolved_, and the ordinals changed, so the values didn't correspond anymore to what it was expecting.- Anyway, long story short, if you would like to prevent this system-wide (and I recommend it), [configure](https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features) `ObjectMapper` to prevent using the Enum's ordinals with `DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS`.
- Something like this should work:
- ```java
- final var mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true);
- ```
- If you are using `Spring Boot` you can achieve this modifying `application.yaml`:
- ```yaml
- spring:
- jackson:
- deserialization:
- fail-on-numbers-for-enums: true
- ```
- This is something that could go really wrong. I remember using this, and it was fine initially, until the `enum` in question _evolved_, and the ordinals changed, so the values didn't correspond anymore to what the initial assumption was.
- Anyway, long story short, if you would like to prevent this system-wide (and I recommend it), [configure](https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features) `ObjectMapper` to prevent using the Enum's ordinals with `DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS`.
- Something like this should work:
- ```java
- final var mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true);
- ```
- If you are using `Spring Boot` you can achieve this modifying `application.yaml`:
- ```yaml
- spring:
- jackson:
- deserialization:
- fail-on-numbers-for-enums: true
- ```
#1: Initial revision
This is something that could go really wrong. I remember using this, and it was fine initially, until the `enum` in question _evolved_, and the ordinals changed, so the values didn't correspond anymore to what it was expecting. Anyway, long story short, if you would like to prevent this system-wide (and I recommend it), [configure](https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features) `ObjectMapper` to prevent using the Enum's ordinals with `DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS`. Something like this should work: ```java final var mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true); ``` If you are using `Spring Boot` you can achieve this modifying `application.yaml`: ```yaml spring: jackson: deserialization: fail-on-numbers-for-enums: true ```