gpt4 book ai didi

java - 使用 Jackson 的非对称名称/属性映射,更优雅的解决方案?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:30 26 4
gpt4 key购买 nike

我们在后端使用一个 API,输出驼峰式属性,将其映射到 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;
}
}

它可以工作,但我认为它不是很优雅,因为我们的输入始终是驼峰式,而输出始终是蛇形。有没有办法为 jackson 全局设置 JSON 序列化为 snakecase 和反序列化为 camelcase? (我们在 Spring 中将它与 RestTemplate 一起使用,如果这有什么不同的话)

干杯

最佳答案

您可以实现并注册自己的PropertyNamingStrategy,其中为public String nameForGetterMethod(...)public String nameForSetterMethod(...) 定义不同的逻辑 方法。

关于java - 使用 Jackson 的非对称名称/属性映射,更优雅的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com