Is there a way to use annotation on a List property in a class to use ACCEPT_SINGLE_VALUE_AS_ARRAY
in Jackson
? I'm using Spring and getting the below exception
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
Assume I have a class as below:
public class MyClass { private List < String > value; }
And my JSON structures are as below:
case 1:
[{"operator": "in", "value": ["Active"], "property": "status"}]
case 2:
[{"operator": "like", "value": "aba", "property": "desc"}]
What annotation should I use to let the framework know I want these 2 cases to be treated the same when deserializing.
UPDATE: I moved the updates to an answer in this post for more clarity.
You can use @JsonFormat annotation,
public class MyClass { @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private List<String> value; }
To work with this you need to have Jackson version min 2.7.0
. You can also use other available JsonFormat Features
@Autowired private ObjectMapper mapper; //... mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
Initializer Class
.Jackson
in your Bean Configuration
These would solve the issue but it will be activated for every deserialization
process.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With