如何使用对象映射器将List <entity>转换为List <dto>对象?

时间:2017-03-12 09:30:25

标签: java objectmapper

我有这样的方法:

public List<CustomerDTO> getAllCustomers() {
    Iterable<Customer> customer = customerRepository.findAll();
    ObjectMapper mapper = new ObjectMapper();
    return (List<CustomerDTO>) mapper.convertValue(customer, CustomerDTO.class);
}

当我尝试转换List值时,我会收到消息

  

com.fasterxml.jackson.databind.JsonMappingException:无法从START_ARRAY标记中反序列化com.finman.customer.CustomerDTO的实例

2 个答案:

答案 0 :(得分:0)

$("input[name='workshop_wenst_u_een_factuur']").click(function () {
  $('.input-field-workshop_gelijk_adres').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_bedrijf').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_naam_contactpersoon').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_email_contactpersoon').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_straat').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_nummer').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_bus').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_postcode').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_gemeente').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_land').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_btw-nummer').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none'),
  $('.input-field-factuur_opmerkingen').css('display', ($(this).val() === 'Ik heb wel een factuur nodig.') ? 'block':'none');
})

这会尝试创建一个ticks,而不是它们的列表。

也许这会有所帮助:

mapper.convertValue(customer, CustomerDTO.class)

答案 1 :(得分:0)

您可以执行以下操作:

static <T> List<T> typeCastList(final Iterable<?> fromList,
                                final Class<T> instanceClass) {
    final List<T> list = new ArrayList<>();
    final ObjectMapper mapper = new ObjectMapper();
    for (final Object item : fromList) {
        final T entry = item instanceof List<?> ? instanceClass.cast(item) : mapper.convertValue(item, instanceClass);
        list.add(entry);
    }

    return list;
}

// And the usage is
final List<DTO> castedList = typeCastList(entityList, DTO.class);