为了提高性能,我的API将接收需要转换为对象数组的字符串数组。
我的数组如下:
List<String> listPersons = ["1, Franck, 1980-01-01T00:00:00, 00.00", "2, Martin, 1989-01-01T00:00:00, 00.00"];
如果可能的话,如何使用Java 8轻松地将其转换为“人(列表)”列表,这样我就不必创建循环并手动分解字符串了?
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) {}
不幸的是,它似乎没有检测到我的转换器,并且抛出了错误; / 任何想法?谢谢
答案 0 :(得分:0)
请注意:String[] data = from.split(",");
不能与,
用作字符分隔符,因为值使用此字符,例如:1980-01-01T00:00:00, 00.00
。
为了提高性能,我的API将接收一个数组 我需要转换为对象数组的字符串。
这是没有答案。 JSON是一种消耗很少的内存(字面量)来传达结构的格式。因此,您甚至不需要将一个字符串连接到一个字符串中,在这里代表差异Person
的不同信息。
设计一个等待非结构化JSON /文本的API,并以反模式对后端的JSON /文本进行重构:效率不高,它使API不清楚,并且在前端和后端都添加了样板代码。