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

hsvhsicv  于 2023-01-17  发布在  Spring
关注(0)|答案(2)|浏览(166)

我是Sping Boot 的新手,我正在尝试弄清楚如何解析json数据,我看到了很多关于如何将json字符串对象Map到带注解的Java类以及使用和对象Map器的教程,就像这样:

儿子:

{
    "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对象中的字段名Map到Java类中的字段名,或者是否有办法将json字符串解析为键值对(这样我就可以手动将字段添加到Java对象中)?

iszxjhcz

iszxjhcz1#

在Jacksonwith @JsonProperty中,您可以使用其注记参数value自定义字段名称
因此,您只需使用@JsonProperty注解来注解实体字段,并提供一个自定义JSON属性名,如下所示:

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

aoyhnmkz2#

@JsonProperty将为您执行此操作:

@JsonProperty("name_in_json") 
private Long value;

相关问题