当在java中使用jackson时,我希望能够为序列化和反序列化的json对象使用不同的名称。更具体地说:我正在从一个API获取数据,该API在其JSON属性上使用一个名称标准,但我的端点使用另一个名称标准,在本例中,由于我只想传递数据,因此我希望能够将属性转换为我的名称标准。
我在这里读到过类似的问题,但我似乎就是不能让它工作。
private String defaultReference;
@JsonProperty(value = "default_reference", access = JsonProperty.Access.WRITE_ONLY)
public void setDefaultReference(String defaultReference)
{
this.defaultReference = defaultReference;
}
@JsonProperty(value = "defaultReference", access = JsonProperty.Access.READ_ONLY)
public String getDefaultReference()
{
return defaultReference;
}
这是我最新的尝试。问题是它总是返回null,所以没有使用setter。
我也试过:
@JsonProperty(value = "default_reference", access = JsonProperty.Access.WRITE_ONLY)
private String defaultReference;
@JsonProperty(value = "defaultReference", access = JsonProperty.Access.READ_ONLY)
public String getDefaultReference()
{
return defaultReference;
}
这种方法是可行的。它可以反序列化default_reference
。问题是在我的JSON响应中,我得到了default_reference
和defaultReference
。最好我只得到defaultReference
。
有没有人做过类似的事情,看看我所尝试的有什么问题?
2条答案
按热度按时间5t7ly7z51#
您的思路是正确的。下面是一个使用测试JSON文档的示例。
mzmfm0qo2#
另一个替代方案是