OldCurmudgeon OldCurmudgeon - 4 months ago 21
Java Question

Change field case with an ObjectMapper

I think I need to create a specialist

ObjectMapper
and cannot find any sample code to start the process.

The creator of the JSON is using
.Net
and
public
properties and therefore uses field names with an uppercase initial. I am parsing the JSON into POJOs so I would like to use a lowercase initial.

At their end:

public class Facet
{
public string Name { get; set; }
public string Value { get; set; }
}


At my end I must therefore have:

public class Facet {
public String Name;
public String Value;
}


I would much prefer:

public class Facet {
public String name;
public String value;
}


Am I right that this could be done with an
ObjectMapper
?

Answer

Your first issue can be addressed very simply with the @JsonProperty annotation:

// java-side class
public class Facet
{
    @JsonProperty("Name")
    public String name;

    @JsonProperty("Value")
    public String value;
}

Now the ObjectMapper will match up the differently-cased field names. If you don't want to add annotations into your classes, you can create a Mix-in class to stand in for your Facet:

public class FacetMixIn
{
    @JsonProperty("Name")
    public String name;

    @JsonProperty("Value")
    public String value;
}

objectMapper.getDeserializationConfig().addMixInAnnotations(Facet.class, FacetMixIn.class);

This will achieve the same thing, without requiring additional annotations in your Facet class.