如何解决使用 JAVA 反射如何创建自定义 JSON 对象映射
我有一个以下格式的json对象,我需要将Json中的值分配给java对象,但是JSON和class中的标签名称不同。
{
FirstName: "Sample",LastName: "LName",Address: [
{
type: "Temp",street: "test stree",},{
type: "Perm",}
]
}
Class Parent{
private String Name1;
private String Nama2;
private List<Address> address;}
Class Address{
Private String type;
private String data;
}
我想使用 Java 反射实现自定义对象映射器。映射如下,但我不知道如何实现这一点,任何有价值的建议或外部 api 的使用都将帮助我实现这个场景。
Json 对象名 Jave 类对象名
名字 ---------- Name1
姓 ---------- Name2
Address.type ------- 地址类类型
Address.street ----- 地址类数据
解决方法
如果您收到具有相同结构但属性名称发生变化的 json 数据,您将需要反思,例如:
{
FirstName1: "Sample",LastName1: "LName",Address1: [
{
type1: "Temp",street1: "test stree",},{
type1: "Perm",}
]
}
{
FirstName2: "Sample",LastName2: "LName",Address1: [
{
type2: "Temp",street2: "test stree",{
type2: "Perm",}
]
}
在你的情况下,它看起来更像是一个属性名称匹配问题,你可以像这样注释你的java pojo:
public class Parent{
@JsonProperty("FirstName")
private String Name1;
@JsonProperty("LastName")
private String Nama2;
private List<Address> address;
}
public class Address{
private String type;
@JsonPRoperty("street")
private String data;
}
最后,您可以使用标准 Jackson 库反序列化您的 json 对象:
new ObjectMapper().readValue(json,Parent.class);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。