我正在尝试将JSON转换为POJO。我曾与Jackson合作转换标准JSON文件。在这个特殊的情况下,我想将键值覆盖到“默认”类/变量。在这个情况下,有多个键值要替换(即数百个,要替换的键值未知)。
这可能吗?我想将其存储到Map中,然后迭代并将每个存储到POJO中,但不知道是否有不同的选择,因为我对将JSON存储到Map不太熟悉。
要处理的JSON示例:
"People" : {
"person1" : {
"name" : "john doe",
"address" : "123 main st",
"email" : "john@doe.com"
},
"person2" : {
"name" : "bob cat",
"address" : "234 dog st",
"email" : "bob@cat.com"
},
"person3" : {
"name" : "foo bar",
"address" : "111 1st ave",
"email" : "foo@bar.com"
},
"person8" : {
"name" : "james bono",
"address" : "999 alaska st",
"email" : "james@bono.com"
}
}
有可能生成如下结构的类吗?主要问题是有数百个值要替换,假设它们是未知的,我不能使用这种方法。
@JsonIgnoreProperties(ignoreUnknown = true)
public class People {
@JsonAlias({"person1", "person2"})
private List<Details> person; // --> this should be the default replacing person1, person2, and so on
private class Details {
String name;
String address;
String email;
}
}
2条答案
按热度按时间enyaitl31#
您可以对所有属性
personXYZ
使用JsonAnySetter注解。请参阅以下示例:对于您的
JSON
以上代码打印:如果您使用内部类,请记住将其设置为
public static
,以使其对Jackson
示例化进程可见。另请参阅:
ljsrvy3e2#
只是补充我的两点意见。我认为这种方式看起来更好,也更容易检索数据。Jackson将在不需要任何其他标记或自定义代码的情况下进行反序列化,这一切都很好,并在散列表中排序。
第一个
}