# Importa CSV da Excel o Sheets in JSON con type casting

> Convertitore CSV/TSV ↔ JSON online bidirezionale: parser RFC 4180, auto-detect delimitatore (virgola, tab, pipe), type casting (int/float/bool).

Strumento gratuito nel browser (nessun upload): https://www.mauriziofonte.it/strumenti/convertitore-csv-json

Conversione **bidirezionale** fra CSV (TSV o pipe-separated) e JSON. Parser **RFC 4180 compliant** con gestione corretta dell'escape a doppia quote, auto-detect del delimitatore, type casting opzionale (int, float, bool, null) per il JSON output. Pensato per chi importa o esporta dataset fra Excel, Google Sheets, database e API, con tutta la conversione locale al browser.

## Come usare il convertitore

1. **Incolla il CSV o JSON** - Per CSV: una riga per record, prima riga opzionale come header. Per JSON: array di oggetti (ogni oggetto = una riga). Il tool gestisce CSV con quote (campi con virgole o newline dentro), TSV (tab-separated), pipe-separated.
2. **Scegli direzione e delimitatore** - CSV->JSON o JSON->CSV. Delimitatore: auto-detect funziona con virgola, punto e virgola (Excel italiano), tab, pipe. Override manuale se l'auto sbaglia.
3. **Configura headers + cast** - Headers attivo: prima riga del CSV diventa keys del JSON object. Disattivo: output è array di array. Type cast: stringhe "42" diventano number 42, "true"/"false" diventano bool, vuoti diventano null.
4. **Esporta** - Copia negli appunti o scarica file (.csv o.json). Funziona con tab in Excel via paste, oppure import diretto in Postgres COPY/MySQL LOAD DATA INFILE per il CSV output.

## Perché un altro convertitore CSV/JSON

Tre fattori distintivi.

**RFC 4180 corretto.** Molti convertitori online sbagliano il parsing di CSV con virgolette: `"a,b",c,"d"` deve produrre 3 campi (`a,b` | `c` | `d`), non 4. Anche il quote escaping interno (`"a""b"` = letterale `a"b`) è frequentemente bacato. Il parser qui implementa fedelmente RFC 4180: stato-machine carattere per carattere, gestisce quote/escape correttamente.

**Auto-detect delimiter.** CSV è convenzione, non standard rigido. Excel italiano salva con punto e virgola (per non confondere con la virgola decimale). Database export usano spesso tab (TSV). Il tool conta i delimitatori candidati (,;\t|) nei primi 4KB e sceglie il più frequente. Override manuale se serve.

**Type casting opzionale.** CSV è string-only by design. JSON ha tipi nativi. Il cast "42" -> 42 (number), "true" -> true (boolean), vuoto -> null è una scorciatoia comune. Disattivabile per i CSV dove gli zeri leading sono significativi (codici fiscali, IBAN, prefissi telefonici).

## Glossario

- **RFC 4180**: Standard de facto per CSV (2005). Definisce: linea = record, virgola = field separator, doppia quote = field delimiter (per campi con virgole/newline), doppia quote escapata come "" letteralmente.
- **TSV**: Tab-Separated Values. Variant di CSV con tab come delimitatore. Comune per export di database (PostgreSQL COPY default), Excel (clipboard paste) e Hadoop.
- **Type casting**: Conversione automatica di stringhe a tipi nativi (int, float, bool, null) durante CSV -> JSON. Heuristic: regex matching, niente parsing avanzato (date, currency).
- **Header row**: Prima riga del CSV con nomi di colonna. In JSON output diventa keys degli oggetti. Senza header, output è array di array (positional).

## Domande frequenti

### Excel italiano salva CSV con punto e virgola, è supportato?

Si, sia in auto-detect che con override manuale. Excel italiano usa ; come delimitatore per non confondere con la virgola decimale (1.234,56). Il tool riconosce automaticamente il pattern e produce JSON corretto.

### Type casting trasforma '0123' in 123 perdendo lo zero leading?

Si, quando attivo. Se i tuoi CSV hanno codici con zeri leading (CAP italiani '00100', codici fiscali con zeri davanti), DISATTIVA type cast. Il tool tratta solo stringhe matchate da regex strict (^-?\d+$): '0123' matcha e diventa 123. Per evitare: cast off.

### Il convertitore JSON->CSV gestisce nested object?

Parzialmente. Object al top level = riga. Nested object dentro un campo viene serializzato come stringa JSON (es. `{"meta":{"a":1}}` -> riga con campo 'metà con valore '{"a":1}'). Per nested object con re-flattening, conviene preprocessing in Python/jq.

### Funziona offline?

Sì. Parser e serializer girano direttamente nel browser; una volta caricata la pagina, il tool continua a funzionare anche senza connessione.

### C'è un limite di righe?

Il tool non impone un limite fisso. Il limite è la memoria del tab. CSV con 100K righe e 20 colonne (~10MB testo) gira in pochi secondi su CPU moderna. Per dataset più grandi: `jq` + `csvkit` CLI sono streaming e gestiscono GB.

### I campi numerici con separatore decimale italiano (1.234,56)?

Type cast non li riconosce: matcha solo formato US (1234.56). I valori restano stringhe in JSON. Per supporto numbers EU, preprocessing necessario (sed/awk per swap virgola e punto).

### Posso importare CSV con BOM (Byte Order Mark)?

Si. Il browser rimuove il BOM UTF-8 in input. Per output CSV in Excel-friendly, alcuni preferiscono CSV con BOM (`\ufeff` all'inizio): per ora il tool produce CSV senza BOM, conviene aggiungerlo manualmente o convertire encoding via iconv.

### Differenza fra delimiter ; e,?

Convenzione regionale. US/UK: virgola. Germania/Italia/Francia/Spagna: punto e virgola (per non confondere col decimale). Excel sceglie automaticamente in base al locale del sistema. Per max compatibility cross-locale, conviene usare TSV (tab) o pipe (|).

---
Uno strumento di Maurizio Fonte, senior backend engineer. Tutti gli strumenti: https://www.mauriziofonte.it/strumenti/
