如何解决用于多种命名策略的 ObjectMapper
我正在处理一个数据集,其中在属性名称的标记之间同时使用下划线和连字符:
{
"id" : "116","priority" : 3,"table_id" : 0,"hard-timeout" : 0,"match" : {
"ethernet-match" : {
"ethernet-type" : {
"type" : 2048
}
},"ipv4-destination" : "10.0.0.25/32"
},"strict" : false,"flow-name" : "port_X_to_8_ip","instructions" : {
"instruction" : [ {
"order" : 0,"apply-actions" : {
"action" : [ {
"order" : 1,"output-action" : {
"max-length" : 60,"output-node-connector" : "8"
}
} ]
}
} ]
},
请注意,大多数元素都有连字符,但有一些使用下划线,例如 table_id
。
在 Java 方面,我使用此代码来创建我的映射器:
import com.fasterxml.jackson.databind.json.JsonMapper;
...
JsonMapper jsonMapper = JsonMapper.builder().configure(SerializationFeature.INDENT_OUTPUT,true).build();
jsonMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); // <-- combine this
jsonMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE); // <-- with this?
最后两行是我目前的症结所在。我希望命名策略适用于 SNAKE_CASE
或 KEBAB_CASE
,但是我看不到 or
属性的方法,并且在 google 上找不到太多内容。
解决方法
您选择适合大多数属性的命名策略,然后使用 @JsonProperty()
注释来命名不符合标准的命名策略。
在您的情况下,这将是 PropertyNamingStrategy.KEBAB_CASE
和 @JsonProperty("table_id")
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。