假设我有一个 POJO,如下 -
public class Pojo {
String name;
String address;
Map<String, String> values;
//getter/setters
}
如果,我使用 Jackson
将其转换为 JSON
格式的 String
,如下 -
Pojo pojo= new Pojo ();
pojo.setName("My Name");
pojo.setAddress("Yet not found");
Map<String, String> map = new HashMap<>();
map.put("key1", "val1");
map.put("key2", "val2");
map.put("key3", "val3");
pojo.setValues(map);
ObjectMapper objectMapper = new ObjectMapper();
String str = objectMapper.writeValueAsString(parentPojo);
System.out.println(str);
我得到一个JSON
格式的String
,如下 -
{
"name": "My Name",
"address": "Yet not found",
"values": {
"key1": "val1",
"key2": "val2",
"key3": "val3"
}
}
有什么办法,我可以使用Gson/Jackson
进行如下操作吗?
{
"name": "ParentName",
"address": "Yet not found",
"key1": "val1",
"key2": "val2",
"key3": "val3"
}
注意 - 我知道如果我将所有内容都放在一个 Map
中,这可以轻松完成,但我不能这样做,我还有一些依赖于这些的其他业务逻辑。
最佳答案
使用 Jackson,用 @JsonAnyGetter
注释 getValues()
和 setValues()
与 @JsonAnySetter
:
public class Pojo {
private String name;
private String address;
private Map<String, String> values;
// Getters and setters for name and address
@JsonAnyGetter
public Map<String, String> getValues() {
return values;
}
@JsonAnySetter
public void setValues(Map<String, String> values) {
this.values = values;
}
}
关于java - Gson、Jackson、Flaten Map/HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51154723/