使用Jackson进行不对称的名称/属性映射,更优雅的解决方案?

汤姆

我们在后端使用了一个API,该API输出camelCased属性,将其映射到POJO,应用一些业务逻辑,然后将其与我们的API一起输出到某些应用程序。我们要输出的格式是snake_case属性。

该测试描述了我们想要做什么:

@Test
public void mappingTest() throws IOException {
    String input = "{ \"merchantId\": 23, \"contactName\": \"foobar\" }";

    ObjectMapper mapper = new ObjectMapper();
    Merchant merch = mapper.readValue(input, Merchant.class);

    String output = mapper.writeValueAsString(merch);

    String expectedOutput = "{ merchant_id: 23, contact_name: 'foobar' }";
    assertEquals("", expectedOutput, output);
}

目前,模型类如下所示:

@JsonInclude(Include.NON_NULL)
public class Merchant {

    private String merchantId;
    private String contactName;

    public Merchant() {
    }

    public Merchant(final String merchantId, final String contactName) {
        this.merchantId = merchantId;
        this.contactName = contactName;
    }

    @JsonProperty("contact_name")
    public String getContactName() {
        return contactName;
    }

    @JsonProperty("contactName")
    public void setContactName(final String contactName) {
        this.contactName = contactName;
    }

    @JsonProperty("merchant_id")
    public String getMerchantId() {
        return merchantId;
    }

    @JsonProperty("merchantId")
    public void setMerchantId(final String merchantId) {
        this.merchantId = merchantId;
    }
}

它可以工作,但我认为它不是很优雅,因为我们的输入始终是驼峰形,而输出始终是蛇形。有没有一种方法可以将杰克逊的JSON序列化全局设置为snakecase,反序列化为camelcase?(如果有什么区别,我们将它与Spring中的RestTemplate一起使用)

干杯

安德鲁蒙尼

您可以实现并注册自己的方法,分别PropertyNamingStrategypublic String nameForGetterMethod(...)public String nameForSetterMethod(...)方法定义不同的逻辑

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

“ for”循环的更优雅的解决方案

图形实现更优雅的解决方案?

从属性的逗号分隔列表创建数组的更优雅的解决方案?

寻找更优雅的任务处理解决方案

:nth-child内容替换的更优雅的解决方案

这个问题有更优雅的解决方案吗?

SSL使用对称还是不对称?

使用igraph绘制不对称关系

不对称网格

是否有一种更优雅的解决方案来填充地图中的列表?

针对同一领域的多个OR的更优雅的解决方案

需要更优雅的解决方案以达到均匀的字符串长度

在异步函数中返回承诺-什么是更优雅/更好的实践解决方案?

ASP.NET Core 2.0 Web API实体框架核心-寻找更优雅的解决方案

JQuery 在单击和悬停文本链接时显示 div - 更优雅的解决方案?

有没有更优雅的解决方案来修改这些文件名?

使用JPA / Hibernate进行国际化的最优雅的解决方案?

探索大量正确/错误属性的优雅解决方案

检查日期/期间是否在另一个日期/期间内-可以使用更优雅的解决方案吗?

不对称CSS阴影

errors.Is(...) 不对称❓

Levenshtein距离不对称

为什么使用通配符时Bash条件不对称?

matplotlib使用不对称误差线绘制直方图

对称矩阵乘积不对称

在度中心度networkx值字典中找到最大值的键的更优雅的解决方案?

这个重复代码的优雅解决方案?

优雅的解析日期的解决方案

什么是条件比较的优雅解决方案?