2014-10-24 2 views
0

Как конвертироватьява список преобразования объекта массива в POJO

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; 
} 

Есть ли простой способ сделать это? Какая библиотека может быть здесь полезной?

Спасибо.

+2

Если вы используете Java 8, просто используйте «Stream». В противном случае напишите цикл. С чем вы столкнулись? –

+0

Вы можете использовать Dozer для этого: http://dozer.sourceforge.net/ – Tom

ответ

2

Возможно, 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].

+0

как? какой именно метод? – riship89

+0

@ riship89 читайте этот короткий учебник: http://dozer.sourceforge.net/documentation/usage.html. – Tom

Смежные вопросы