我想我需要创建一个MavenObjectMapper
,但找不到任何示例代码来启动这个过程。
JSON的创建者使用.Net
和public
属性,因此使用大写首字母的字段名。我将JSON解析为POJO,因此我希望使用小写首字母。
在其端部:
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
来完成,对吗?
5条答案
按热度按时间kse8i1jr1#
您的第一个问题可以通过
@JsonProperty
注解非常简单地解决:现在,
ObjectMapper
将匹配不同大小写的字段名。如果不想在类中添加注解,可以创建一个Mix-in类来 * 代替 *Facet
:这将实现相同的功能,而不需要在
Facet
类中添加额外的注解。iovurdzv2#
可以将Jackson
ObjectMapper
配置为使用内置或自定义的PropertyNamingStrategy,而不是对每个字段进行注解,以便在Java属性/字段名称和JSON元素名称之间应用一致的转换。例如:
rkue9o1l3#
这个问题可以从
Jackson 2.5.0
中解决,如下所示:来自javadoc:
com.fasterxml.jackson.databind.MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
个此功能允许对传入JSON进行更宽松的反序列化。如果启用此功能,则将使用其小写等效项匹配Bean属性,这意味着任何大小写组合(传入名称和匹配名称均按小写形式规范化)都可以使用。
请注意,由于传入的属性名称在比较之前需要为小写,因此存在额外的性能开销。但是,已经为小写的名称的开销应该可以忽略不计。
默认情况下,该功能处于禁用状态。
开始时间:2.5
6ie5vjzr4#
只是一个快速更新,因为我正在寻找相同的答案和代码片段objectMapper。setPropertyNamingStrategy(PropertyNamingStrategy。SNAKE_CASE);
thtygnil5#
自2.13版起使用构建器: