使用对象映射器更改字段大小写

2022-09-02 00:35:48

我认为我需要创建一个专家,并且找不到任何示例代码来启动该过程。ObjectMapper

JSON 的创建者正在使用 和 属性,因此使用大写首字母的字段名称。我正在将JSON解析为POJO,因此我想使用小写首字母。.Netpublic

在它们结束时:

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

因此,在我这边,我必须:

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

我更喜欢:

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

我说的对吗,这可以用一个来完成?ObjectMapper


答案 1

您的第一个问题可以通过注释非常简单地解决:@JsonProperty

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

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

现在,将匹配大小写的字段名称。如果您不想在类中添加注释,可以创建一个 Mix-in 类来代替您的 :ObjectMapperFacet

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

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

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

这将实现相同的目标,而无需在类中进行其他注释。Facet


答案 2

Jackson 可以配置为使用内置或自定义的 PropertyNamingStrategy,而不是对每个字段进行注释,以便在 Java 属性/字段名称和 JSON 元素名称之间应用一致的转换。ObjectMapper

例如:

myObjectMapper.setPropertyNamingStrategy(PascalCaseStrategy);