使用 JAVA 反射如何创建自定义 JSON 对象映射
Using JAVA Reflection how to create custom JSON object mapping
我有一个以下格式的 json 对象,我需要将 Json 中的值分配给 java 对象,但是 JSON 中的标签名称和class不一样。
{
FirstName: "Sample",
LastName: "LName",
Address: [
{
type: "Temp",
street: "test stree",
},
{
type: "Perm",
street: "test stree",
}
]
}
Class Parent{
private String Name1;
private String Nama2;
private List<Address> address;}
Class Address{
Private String type;
private String data;
}
我想使用 Java 反射实现自定义对象映射器。映射如下,但我不知道要实现这个,任何有价值的建议或使用外部 api 都会帮助我实现这个场景。
Json 对象名称 Jave Class 对象名称
名字 ---------- 姓名 1
姓氏 ---------- 姓名 2
Address.type ------ 地址 class 类型
Address.street ----- 地址class 数据
如果您收到 json 具有相同结构但属性名称发生变化的数据,您将需要反思,例如:
{
FirstName1: "Sample",
LastName1: "LName",
Address1: [
{
type1: "Temp",
street1: "test stree",
},
{
type1: "Perm",
street1: "test stree",
}
]
}
{
FirstName2: "Sample",
LastName2: "LName",
Address1: [
{
type2: "Temp",
street2: "test stree",
},
{
type2: "Perm",
street2: "test stree",
}
]
}
在你的情况下,它看起来更像是一个 属性 名称匹配问题,你可以像这样注释你的 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);
我有一个以下格式的 json 对象,我需要将 Json 中的值分配给 java 对象,但是 JSON 中的标签名称和class不一样。
{
FirstName: "Sample",
LastName: "LName",
Address: [
{
type: "Temp",
street: "test stree",
},
{
type: "Perm",
street: "test stree",
}
]
}
Class Parent{
private String Name1;
private String Nama2;
private List<Address> address;}
Class Address{
Private String type;
private String data;
}
我想使用 Java 反射实现自定义对象映射器。映射如下,但我不知道要实现这个,任何有价值的建议或使用外部 api 都会帮助我实现这个场景。
Json 对象名称 Jave Class 对象名称
名字 ---------- 姓名 1
姓氏 ---------- 姓名 2
Address.type ------ 地址 class 类型
Address.street ----- 地址class 数据
如果您收到 json 具有相同结构但属性名称发生变化的数据,您将需要反思,例如:
{
FirstName1: "Sample",
LastName1: "LName",
Address1: [
{
type1: "Temp",
street1: "test stree",
},
{
type1: "Perm",
street1: "test stree",
}
]
}
{
FirstName2: "Sample",
LastName2: "LName",
Address1: [
{
type2: "Temp",
street2: "test stree",
},
{
type2: "Perm",
street2: "test stree",
}
]
}
在你的情况下,它看起来更像是一个 属性 名称匹配问题,你可以像这样注释你的 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);