gpt4 book ai didi

java - Jackson JSON 使用 JAVA BEAN 映射 JSON 键

转载 作者:行者123 更新时间:2023-11-30 02:40:48 24 4
gpt4 key购买 nike

我正在使用 Jackson JSON LIB 2.8,并且我正在使用 Json.mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);

但有时我需要映射一些具有两个不同名称的字段,例如

POJO 具有属性 buildindg ,我需要将其映射到 buildingUidBUILDING 取决于 JSON 中存在的键,它们是否以任何方式这样做?

示例:

public class Building extends Bean {
private UUID id;
private String name;

}

我有两个不同的来源,一个是我的数据库,它返回以下格式的 JSON:

{
"ID":"build",
"NAME":"name1"

}

我的另一个来源是客户:

{
"UID" : "build",
"name" : "name1"
}

正如你所看到的,我的问题是将 id 与 UID 和 ID 一起映射,我设法将第一个映射为:

Json.mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);

但另一个来源是 UID,当我执行类似的操作时,我不知道如何自动映射它

Json.encode(Building.toString());

最佳答案

可以使用用@JsonSetter注释的多个setter

尝试这样的事情:

public class Building extends Bean {
private String id;
private String name;

@JsonGetter("id")
public String getId() {
return id;
}

@JsonSetter("id")
public void setId(String id) {
this.id = id;
}

@JsonSetter("UID")
public void setUID(String id) {
setId(id);
}

@JsonGetter("name")
public String getName() {
return name;
}

@JsonSetter("name")
public void setName(String name) {
this.name = name;
}

@JsonSetter("NAME")
public void setUpperCaseName(String name) {
setName(name);
}

}

但这有点糟糕(解决方案不是动态的)。

关于java - Jackson JSON 使用 JAVA BEAN 映射 JSON 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41770226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com