当前位置: 首页 > 知识库问答 >
问题:

使用JAVA反射如何创建自定义JSON对象映射

尚棋
2023-03-14
{
  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;
}

共有1个答案

韩耘豪
2023-03-14

如果接收到具有相同结构的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);
 类似资料:
  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 使用代替和代替 然后在请求属性中添加 但是当我在javascript中检索它时,我得到了jsonObject的值 我在我的项目中已经使用了下面的库,如果需要,可以使用任何新的库

  • 问题内容: 给定班级价值: 我正在尝试使用创建该类的新实例: 从主要: 这不起作用,Eclipse的输出: 如果是这样,怎么可以用我创建了一个新的价值目标,在那里我调用的? 谢谢 问题答案: 您需要为此找到确切的构造函数。只能用于调用null构造函数。所以写

  • 我有一个用例,其中我需要维护两组JSON输出,一组具有JSON属性的漂亮名称,另一组没有。所以我决定自定义ObjectMapper,以便它忽略字段上的@JSONProperty(“pretty name”)注释,而使用字段属性名。在本例中,希望得到以下JSON输出 具有漂亮名称的JSON输出如下所示 我的ObjectMapper配置代码如下所示 我看了一些其他的答案,但对我不起作用。我得到了一个N

  • 我们有一张有很多柱子的大桌子。在我们移动到MySQL集群后,表无法创建,因为: 错误1118 (42000):行大小过大。使用的表类型(不包括BLOB)的最大行大小为14000。这包括存储开销,检查手册。您必须将一些列更改为TEXT或BLOB 例如: 它是一个用于存储配置参数的表。我在想,我们可以将一些列组合成一个列,并将其存储为JSON对象,并将其转换为Java对象。 例如: 我们定义了: 通过

  • 初始化服务器时,出现以下错误: java.lang.IllegalStateException:无法将[java.lang.String]类型的值转换为属性“Object Mapper”所需的类型[org.codehaus.jackson.map.objectMapper]:在org.springframework.beans.typeConverterDelegate.ConvertifEmen