Spring Boot 将 JSON 数据解析为具有不同字段名称的 Java 类

问题描述 投票:0回答:2

我是 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 对象)?

java spring spring-boot spring-mvc jackson
2个回答
2
投票

在 Jackson 中,使用

@JsonProperty
,您可以使用注释参数自定义字段名称
value

因此,您只需使用

@JsonProperty
注释来注释实体字段并提供自定义 JSON 属性名称,如下所示:

public class MyClass{ 
    @JsonProperty("original_field_name_in_json") 
    private UUID id;
...

1
投票

@JsonProperty 将为您做这件事:

@JsonProperty("name_in_json") 
private Long value;
© www.soinside.com 2019 - 2024. All rights reserved.