I'm using Jackson for creating Java objects from JSON. Let's suppose I have a JSON string like this:
{"a":"a", "b":"b", "c":"c"}
And a pojo like this:
@JsonIgnoreProperties(ignoreUnknown = true)
public class A {
private String a;
private String b;
// ...
}
So c is clearly an unknown property - and it will be left out. I was wondering, is there any way I can log that c was unknown and ignored?
I don't know of any built-in tool that does this. You can write your own with @JsonAnySetter
Marker annotation that can be used to define a non-static, two-argument method (first argument name of property, second value to set), to be used as a "fallback" handler for all otherwise unrecognized properties found from JSON content.
Use it like
@JsonAnySetter
public void ignored(String name, Object value) {
// can ignore the 'value' if you only care for the name (though you still need the second parameter)
System.out.println(name + " : " + value);
}
within the class you're deserializing to, eg. your A
class.
@JsonAnySetter
when used on a Map field would catch all unmapped properties. When paired with @JsonAnyGetter
would work for serialization and deserialization:
@JsonAnyGetter
@JsonAnySetter
private Map<String, Object> dynamicValues = new LinkedHashMap<>();
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