【发布时间】:2019-01-17 16:37:20
【问题描述】:
为了提高性能,我的 API 将接收我需要转换为对象数组的字符串数组。
我的数组如下所示:
List<String> listPersons = ["1, Franck, 1980-01-01T00:00:00, 00.00", "2, Martin, 1989-01-01T00:00:00, 00.00"];
如果可能的话,如何使用 Java 8 轻松将其转换为人员列表 (List),这样我就不必创建循环并手动分解字符串?
class Person {
private Integer id;
private String name;
private Date dateOfBirth;
// getter and setter
}
理想情况下,我想直接使用 SpringBoot 自动执行此操作 - 使用自定义转换器,例如:
public class StringToPersonConverter implements Converter<String, Person> {
@Override
public Person convert(String from) {
String[] data = from.split(",");
return new Person(Integer.parseInt(data[0]), data[1], new Date(data[2]));
}
}
声明转换器:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToCreditCardConverter());
}
}
最好直接从我的控制器映射它?
@RequestMapping(value = "/insertPersons", method = RequestMethod.POST)
@ResponseBody
public String savePersons(@RequestBody List<Person> listPersons) {}
不幸的是,它似乎没有检测到我的转换器并且它抛出了一个错误;/ 任何想法?谢谢
【问题讨论】:
-
可能是您尝试转换为
List of persons,而不是person。同样从您的问题中,我了解到您只转换为单个字符串(RequestBody),其中包含多个Person的数据。 -
如果抛出异常,请分享相关的stacktrace。
-
使用 JSON 作为你的字符串格式,你甚至不需要做任何特别的事情;只需将参数类型声明为
List<Person>,其余的由 spring 完成。
标签: spring-boot collections java-8