当前位置: 首页 > 面试题库 >

java将对象数组列表转换为POJO

艾奕
2023-03-14
问题内容

如何转换

List<Object[]> to List<POJOObject>

这是例子

//So, lets us say I have Object[], I want to have a class as follows:

class POJOObject {
    //maps to Object[0]
    private Integer x;
    //maps to Object[1]
    private Long y;
    //maps to Object[2]
    private String y;
}

有没有简单的方法可以做到这一点?什么库在这里有用?

谢谢。


问题答案:

也许http://dozer.sourceforge.net可以为您提供帮助。它是可通过xml配置的映射库。

我很快尝试了这个:

public class Main {
  public static void main(String[] args) {
    Object[] obj = new Object[3];
    obj[0] = new Integer(10);
    obj[1] = new Long(2346246234634L);
    obj[2] = "Hello";

    Collections.singletonList("mapping.xml");
    DozerBeanMapper mapper = new DozerBeanMapper(Collections.singletonList("mapping.xml"));
    PojoObject pojo = mapper.map(obj, PojoObject.class);
    System.out.println(pojo);
  }

  public static class PojoObject {
    private Integer integer;
    private Long longg;
    private String string;

    public PojoObject() {}

    public Integer getInteger() {
      return integer;
    }

    public void setInteger(Integer integer) {
      this.integer = integer;
    }

    public Long getLongg() {
      return longg;
    }

    public void setLongg(Long longg) {
      this.longg = longg;
    }

    public String getString() {
      return string;
    }

    public void setString(String string) {
      this.string = string;
    }

    @Override
    public String toString() {
      return String.format("Pojo content: %d, %d, %s", integer, longg, string);
    }
  }
}

我的mappings.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
      http://dozer.sourceforge.net/schema/beanmapping.xsd">
    <mapping>
        <class-a>java.lang.Object[]</class-a>
    <class-b>ch.romix.dozertest.Main.PojoObject</class-b>
        <field>
        <a>this[0]</a>
        <b>Integer</b>
    </field>
    <field>
        <a>this[1]</a>
        <b>Longg</b>
    </field>
    <field>
        <a>this[2]</a>
        <b>String</b>
    </field>
    </mapping>
</mappings>

不幸的是,它仅将10映射到所有三个PojoObject属性。也许您可以看到错误并使用代码段。也许这是Dozer中的一个错误…我找不到使用的任何示例this[0]



 类似资料:
  • 问题内容: 我从服务器得到一个 json数组: 我想使用gson将上面的json数据转换为Java 对象。我尝试了以下方法: 首先,我创建了一个 Person.java 类: 然后,在服务类中,我执行了以下操作: 我收到异常 java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为Person 。如何摆脱我的问题?我只想将json数组转

  • 我得到一个json数组从服务器: 我想使用gson将上述json数据转换为Java

  • 我有这个: 我怎么把它变成一个数组?

  • 问题内容: 我有一个这样的清单: 并在这样的对象上: 如何将“列表”分配给“ myMatrix”? 我不想遍历列表并将元素逐个分配给MyMatrix,但我想尽可能地直接分配它(使用oppurtune修改)。谢谢 问题答案: 您可以使用。 Java文档

  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 我有一个对象列表(选择查询的结果),我想将其转换为一个数组,并且我想将查询的每一列放入数组中的一列中。我在论坛上尝试了许多解决方案,但我没有找到解决方案。 在我的bean中,我有以下列表: 现在我想要的是将 List()的每一列放在一个多维数组列表中,这样就好像我想访问数组列表中的特定单个值一样,我就这样做了。