tt_Gantz tt_Gantz - 4 months ago 46
JSON Question

Jackson Not Overriding Getter with @JsonProperty

JsonProperty
isn't overriding the default name jackson gets from the getter. If I serialize the class below with
ObjectMapper
and jackson I get

{"hi":"hello"}


As you can see the JsonProperty annotation has no effect

class JacksonTester {
String hi;

@JsonProperty("hello")
public String getHi() {
return hi;
}
}


Putting
@JsonProperty
on the String itself doesn't work either. The only way it seems that I can change the name is by renaming the getter, the only problem is that it then will always be lowercase for the first letter

Answer

The problem was that I was using both the old and new jackson libraries

i.e. before I had import org.codehaus.jackson.annotate.JsonProperty; Which I had to change to below, to be consistent with the library I was using.

Since I was using maven that also meant updating my maven dependencies. import com.fasterxml.jackson.annotation.JsonProperty;

For it to work, I needed the @JsonProperty annotation on the getter (putting it on the object didn't work)

I found the answer here (thanks to francescoforesti) @JsonProperty not working as expected