opencsv csvtobeanbuilder不生成bean

w6mmgewl  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(307)

我有一个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,但结果没有改变

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题