使用 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);