我有一个要反序列化的类:
@Data
public class Config {
private Map<String, Item> items;
}
@Data
public class Item {
private String a;
private String b;
private String c;
}
JSON字符串:
{
"item1": {
"a": "1",
"b": "2",
"c": "3"
},
"item2": {
"a": "10",
"b": "20",
"c": "30"
},
"item3": {
"a": "5",
"b": "6",
"c": "7"
}
}
我应该使用什么将JSON字符串反序列化为Config?
编辑:向JSON添加了更多项目
答案 0 :(得分:0)
更新
使用JsonAlias在单个属性中获取多个值:
@JsonAlias({"item1", "item2", "item3"})
private Map<String, Item> items;
可用于为属性定义一个或多个备用名称的注释
旧问题的较旧答案
添加名称为item1
的{{3}}
@Data
public class Config {
@JsonProperty("item1")
private Map<String, Item> items;
}
标记注释,可用于将非静态方法定义为逻辑属性(取决于其签名)或要使用的非静态对象字段(序列化,反序列化)的“设置者”或“获取者”作为逻辑属性。
编辑
在@michaeak评论后更新为Map
答案 1 :(得分:0)
一个同事帮助我回答了我的问题:
@Data
public class Config {
private Map<String, Item> items;
@JsonAnyGetter
public Map<String, Item> getItems() {
return items;
}
@JsonAnySetter
public void setItem(final String key, final Item value) {
items.put(key, value);
}
}
@Data
public class Item {
private String a;
private String b;
private String c;
}