我是 Spring Boot 新手,我正在尝试弄清楚如何解析 json 数据。我看到很多关于如何将 json 字符串对象映射到带注释的 Java 类以及使用对象映射器的教程,如下所示:
json:
{
"UUID": "xyz",
"name": "some name"
}
public class MyClass{
@JsonProperty
private UUID id;
@JsonProperty
private String name;
@JsonAnyGetter
public UUID getId() {
return this.id;
}
@JsonAnySetter
public void setId(UUID id) {
this.id = id;
}
@JsonAnyGetter
public String getName() {
return this.name;
}
@JsonAnySetter
public void setName(String name) {
this.name = name;
}
}
ObjectMapper objectMapper = new ObjectMapper();
MyClass customer = objectMapper.readValue(jsonString, MyClass.class);
问题是我从中获取 json 字符串的系统与我们使用的类命名约定不匹配(而且我无法更改任何一个)。因此,它可能看起来像这样,而不是上面的示例 json 字符串:
{
"randomdstring-fieldId": "xyz",
"anotherrandomstring-name": "some name"
}
这个用例只有两个字段,但我的用例有更大的负载。有没有办法将 json 对象中的字段名称映射到 Java 类中的字段名称,或者有没有办法将 json 字符串解析为键值对(这样我就可以手动将字段添加到我的Java 对象)?
在 Jackson 中,使用
@JsonProperty
,您可以使用注释参数自定义字段名称 value
因此,您只需使用
@JsonProperty
注释来注释实体字段并提供自定义 JSON 属性名称,如下所示:
public class MyClass{
@JsonProperty("original_field_name_in_json")
private UUID id;
...
@JsonProperty 将为您做这件事:
@JsonProperty("name_in_json")
private Long value;