我有一个opencsv的问题,我加载一个csv到我的webservice与postapi,但如果我试图转换csv到一个bean与csvtobeanbuilder的结果bean有所有字段为空值
这是api代码
public Mono<Map<String, Object>> insertPointOfInterest(@RequestAttribute(name="municipalityId", required = true) Long municipalityId,
@RequestPart("file") FilePart file, @RequestParam Optional<String> languages) throws IOException{
Map<String, Object> result = new HashMap<String, Object>();
List<Map<String, Object>> errors = new ArrayList<Map<String, Object>>();
Path tempFile = Files.createTempFile("test", file.filename());
AsynchronousFileChannel channel = AsynchronousFileChannel.open(tempFile, StandardOpenOption.WRITE);
DataBufferUtils.write(file.content(), channel, 0)
.subscribe();
String extension = FilenameUtils.getExtension(file.filename());
if (!extension.equals("csv")) {
result.put("success", false);
result.put("error", "File non in formato csv");
return Mono.just(result).log();
}
try (Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile.toFile())))) {
CsvToBean<PointOfInterestCsv> csvToBean = new CsvToBeanBuilder(reader)
.withType(PointOfInterestCsv.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
List<PointOfInterestCsv> poiCsv = csvToBean.parse();
extracted(municipalityId, errors, poiCsv, getFirstLanguage(languages).orElse(defaultLanguage));
} catch (Exception ex) {
result.put("success", false);
result.put("error", ex);
return Mono.just(result).log();
} finally {
Files.deleteIfExists(tempFile);
}
result.put("success", true);
result.put("error", errors);
return Mono.just(result).log();
}
这是我的豆子
public class PointOfInterestCsv implements Serializable{
@CsvBindByName(column = "IDENTIFICATIVO")
String identificativo;
@CsvBindByName(column = "TITOLO")
String titolo;
@CsvBindByName(column = "DESCRIZIONE")
String descrizione;
@CsvBindByName(column = "INDIRIZZO")
String indirizzo;
@CsvBindByName(column = "CATEGORIA")
String categoria;
@CsvBindByName(column = "FILTRO_TERRITORIALE")
String filtro_territoriale;
@CsvBindByName(column = "TARGET")
String target;
@CsvBindByName(column = "TAG")
String tag;
@CsvBindByName(column = "POI")
String poi;
@CsvBindByName(column = "TIPO_STRUTTURA")
String tipo_struttura;
@CsvBindByName(column = "STELLE")
String stelle;
@CsvBindByName(column = "PREZZO")
String prezzo;
@CsvBindByName(column = "PAGAMENTO")
String pagamento;
@CsvBindByName(column = "TRATTAMENTI")
String trattamenti;
@CsvBindByName(column = "SERVIZI")
String servizi;
@CsvBindByName(column = "TIPO_CUCINA")
String tipo_cucina;
@CsvBindByName(column = "ACCESSIBILITA")
String accessibilita;
@CsvBindByName(column = "TIPO_ESPERIENZE")
String tipo_esperienze;
@CsvBindByName(column = "DURATA")
String durata;
@CsvBindByName(column = "TIPOLOGIA_ESPERIENZE")
String tipologia_esperienze;
@CsvBindByName(column = "TIPO_EVENTO")
String tipo_evento;
@CsvBindByName(column = "IMMAGINI")
String immagini;
@CsvBindByName(column = "LATITUDINE")
String latitudine;
@CsvBindByName(column = "LONGITUDINE")
String longitudine;
@CsvBindByName(column = "TELEFONO")
String telefono;
@CsvBindByName(column = "FAX")
String fax;
@CsvBindByName(column = "MAIL")
String mail;
@CsvBindByName(column = "SITO_WEB")
String sito_web;
@CsvBindByName(column = "MAIL_2")
String mail_2;
@CsvBindByName(column = "TRIPADVISOR_LINK")
String tripAdvisor_link;
@CsvBindByName(column = "FACEBOOK_LINK")
String facebook_link;
@CsvBindByName(column = "INSTAGRAM_LINK")
String instagram_link;
@CsvBindByName(column = "TWITTER_LINK")
String twitter_link;
@CsvBindByName(column = "YOUTUBE_LINK")
String youtube_link;
@CsvBindByName(column = "ORARI_DI_APERTURA")
String orari_di_apertura;
public String getIdentificativo(){
return identificativo;
}
public void setIdentificativo(String identificativo){
this.identificativo = identificativo;
}
public String getTitolo(){
return titolo;
}
public void setTitolo(String titolo){
this.titolo = titolo;
}
public String getDescrizione(){
return descrizione;
}
public void setDescrizione(String descrizione){
this.descrizione = descrizione;
}
public String getIndirizzo(){
return indirizzo;
}
public void setIndirizzo(String indirizzo){
this.indirizzo = indirizzo;
}
public String getCategoria(){
return categoria;
}
public void setCategoria(String categoria){
this.categoria = categoria;
}
public String getFiltro_territoriale(){
return filtro_territoriale;
}
public void setFiltro_territoriale(String filtro_territoriale){
this.filtro_territoriale = filtro_territoriale;
}
public String getTarget(){
return target;
}
public void setTarget(String target){
this.target = target;
}
public String getTag(){
return tag;
}
public void setTag(String tag){
this.tag = tag;
}
public String getPoi(){
return poi;
}
public void setPoi(String poi){
this.poi = poi;
}
public String getTipo_struttura(){
return tipo_struttura;
}
public void setTipo_struttura(String tipo_struttura){
this.tipo_struttura = tipo_struttura;
}
public String getStelle(){
return stelle;
}
public void setStelle(String stelle){
this.stelle = stelle;
}
public String getPrezzo(){
return prezzo;
}
public void setPrezzo(String prezzo){
this.prezzo = prezzo;
}
public String getPagamento(){
return pagamento;
}
public void setPagamento(String pagamento){
this.pagamento = pagamento;
}
public String getTrattamenti(){
return trattamenti;
}
public void setTrattamenti(String trattamenti){
this.trattamenti = trattamenti;
}
public String getServizi(){
return servizi;
}
public void setServizi(String servizi){
this.servizi = servizi;
}
public String getTipo_cucina(){
return tipo_cucina;
}
public void setTipo_cucina(String tipo_cucina){
this.tipo_cucina = tipo_cucina;
}
public String getAccessibilita(){
return accessibilita;
}
public void setAccessibilita(String accessibilita){
this.accessibilita = accessibilita;
}
public String getTipo_esperienze(){
return tipo_esperienze;
}
public void setTipo_esperienze(String tipo_esperienze){
this.tipo_esperienze = tipo_esperienze;
}
public String getDurata(){
return durata;
}
public void setDurata(String durata){
this.durata = durata;
}
public String getTipologia_esperienze(){
return tipologia_esperienze;
}
public void setTipologia_esperienze(String tipologia_esperienze){
this.tipologia_esperienze = tipologia_esperienze;
}
public String getImmagini(){
return immagini;
}
public void setImmagini(String immagini){
this.immagini = immagini;
}
public String getLatitudine(){
return latitudine;
}
public void setLatitudine(String latitudine){
this.latitudine = latitudine;
}
public String getLongitudine(){
return longitudine;
}
public void setLongitudine(String longitudine){
this.longitudine = longitudine;
}
public String getTelefono(){
return telefono;
}
public void setTelefono(String telefono){
this.telefono = telefono;
}
public String getFax(){
return fax;
}
public void setFax(String fax){
this.fax = fax;
}
public String getMail(){
return mail;
}
public void setMail(String mail){
this.mail = mail;
}
public String getSito_web(){
return sito_web;
}
public void setSito_web(String sito_web){
this.sito_web = sito_web;
}
public String getMail_2(){
return mail_2;
}
public void setMail_2(String mail_2){
this.mail_2 = mail_2;
}
public String getTripAdvisor_link(){
return tripAdvisor_link;
}
public void setTripAdvisor_link(String tripAdvisor_link){
this.tripAdvisor_link = tripAdvisor_link;
}
public String getFacebook_link(){
return facebook_link;
}
public void setFacebook_link(String facebook_link){
this.facebook_link = facebook_link;
}
public String getInstagram_link(){
return instagram_link;
}
public void setInstagram_link(String instagram_link){
this.instagram_link = instagram_link;
}
public String getTwitter_link(){
return twitter_link;
}
public void setTwitter_link(String twitter_link){
this.twitter_link = twitter_link;
}
public String getYoutube_link(){
return youtube_link;
}
public void setYoutube_link(String youtube_link){
this.youtube_link = youtube_link;
}
public String getOrari_di_apertura(){
return orari_di_apertura;
}
public void setOrari_di_apertura(String orari_di_apertura){
this.orari_di_apertura = orari_di_apertura;
}
public String getTipo_evento(){
return tipo_evento;
}
public void setTipo_evento(String tipo_evento){
this.tipo_evento = tipo_evento;
}
}
我将尝试上载此csv文件
IDENTIFICATIVO;TITOLO;DESCRIZIONE;INDIRIZZO;CATEGORIA;FILTRO_TERRITORIALE;TARGET;TAG;POI;TIPO_STRUTTURA;STELLE;PREZZO;PAGAMENTO;TRATTAMENTI;SERVIZI;TIPO_CUCINA;ACCESSIBILITA;TIPO_ESPERIENZE;DURATA;TIPOLOGIA_ESPERIENZE;TIPO_EVENTO;IMMAGINI;LATITUDINE;LONGITUDINE;TELEFONO;FAX;MAIL;SITO WEB;MAIL 2;TRIPADVISOR LINK;FACEBOOK LINK;INSTAGRAM LINK;TWITTER LINK;YOUTUBE LINK;ORARI DI APERTURA
1;;Evento prova;via xxx;Eventi;Comune;Altro;Spettacoli/Eventi;altro INT. TUR;;;Prezzo economico ;;;;;Disabili;;2h;;Concerti;;10.12;11.45;123;21;prova@prova.it;https://www.google.com;;;;;;;;
这是解析后的结果
我还尝试在csv中只发送一个字段(显然是修改bean),并修改与字段“identificativo”、“latitudine”和“longitudine”相关的数据类型,将它们分别设置为integer和double,但结果没有改变
暂无答案!
目前还没有任何答案,快来回答吧!