mun*_*ger 5 java serialization json jackson deserialization
我希望在 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;
}
Run Code Online (Sandbox Code Playgroud)
这是我最近的尝试。这样做的问题是它总是返回 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;
}
Run Code Online (Sandbox Code Playgroud)
这种作品。它可以反序列化default_reference。问题是在我的 JSON 响应中我同时得到default_reference和defaultReference。最好我只会得到defaultReference.
有没有人做过类似的事情并看看我所尝试的有什么问题?
你走在正确的轨道上。以下是使用测试 JSON 文档的示例。
public static class MyClass {
private String defaultReference;
@JsonProperty(value = "default_reference")
public void setDefaultReference(String defaultReference) {
this.defaultReference = defaultReference;
}
@JsonProperty(value = "defaultReference")
public String getDefaultReference() {
return defaultReference;
}
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
MyClass instance = objectMapper.readValue("{\"default_reference\": \"value\"}", MyClass.class);
objectMapper.writeValue(System.out, instance);
// Output: {"defaultReference":"value"}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4729 次 |
| 最近记录: |