Scegliere un formato
Compromessi
Scegliere un formato è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Tre formati, tre funzioni
Ora conosce JSON, CSV e YAML. Ognuno è adatto a situazioni diverse. Scegliere quello giusto mantiene i dati facili da produrre, memorizzare e utilizzare.
- JSON per le API e il web
- CSV per i dati tabellari e dei fogli di calcolo
- YAML per la configurazione
puts ['JSON', 'CSV', 'YAML'].join(', ')Punti di forza di JSON
JSON è compatto, supportato universalmente e si mappa a Hash e Array annidati. È lo standard de facto per le API web e per lo scambio di dati tra servizi.
require 'json'
puts({ id: 1, items: [1, 2] }.to_json)Limiti di JSON
JSON non supporta i commenti ed è verboso da modificare manualmente. Le virgole finali e gli apici singoli non sono validi, cosa che crea spesso problemi nei file di configurazione.
require 'json'
begin
JSON.parse('{"a":1,}')
rescue JSON::ParserError
puts 'trailing comma not allowed'
endPunti di forza di CSV
CSV è perfetto per i dati piatti e tabellari: righe e colonne. I fogli di calcolo, le esportazioni e le importazioni in blocco utilizzano tutti CSV, che è estremamente compatto per le tabelle di grandi dimensioni.
require 'csv'
puts(CSV.generate { |c| c << ['a', 'b']; c << [1, 2] })Limiti di CSV
CSV non può rappresentare dati annidati o gerarchici. Non dispone di un sistema di tipi standard, quindi tutto è una stringa finché non lo converte, e i dialetti (separatori, virgolette) variano.
require 'csv'
row = CSV.parse_line('5,true')
puts(row[0].class)
puts(row[1].class)Punti di forza di YAML
YAML è il formato più leggibile per le persone, supporta i commenti e gestisce l'annidamento in modo chiaro. Per questo è ideale per i file di configurazione che gli sviluppatori modificano manualmente.
require 'yaml'
text = "# app config\nport: 8081"
puts(YAML.load(text)['port'])Limiti di YAML
Le regole di indentazione di YAML sono soggette a errori (uno spazio fuori posto lo rende non valido) e il caricamento non sicuro può rappresentare un rischio per la sicurezza. Inoltre, l'analisi è più lenta rispetto a JSON.
require 'yaml'
cfg = YAML.safe_load("port: 8081")
puts(cfg['port'])Confronto dell'annidamento
JSON e YAML rappresentano entrambi in modo naturale la stessa struttura annidata; CSV non può farlo.
require 'json'
require 'yaml'
data = { 'user' => { 'name' => 'Ada', 'roles' => ['admin'] } }
puts(data.to_json)
puts(data.to_yaml)Leggibilità e compattezza
È un compromesso: YAML è il più leggibile, JSON è equilibrato e CSV è il più compatto per le tabelle. Scelga in base al fatto che il principale destinatario sia una persona o una macchina.
require 'json'
require 'yaml'
h = { 'a' => 1, 'b' => 2 }
puts("JSON len: #{h.to_json.length}")
puts("YAML len: #{h.to_yaml.length}")Una guida alla scelta
Regole rapide:
- Deve comunicare con un'API web? JSON
- Deve esportare righe per un foglio di calcolo? CSV
- Deve gestire impostazioni dell'app che una persona modificherà? YAML
In caso di dubbio, JSON è la scelta predefinita più sicura per lo scambio di dati.
choice = { api: 'JSON', table: 'CSV', config: 'YAML' }
puts(choice[:config])Conversione tra formati
Poiché tutti e tre vengono analizzati nelle stesse strutture Hash/Array Ruby, la conversione è semplice: analizzi un formato e serializzi l'altro.
require 'json'
require 'yaml'
data = JSON.parse('{"port":8081,"name":"app"}')
puts(data.to_yaml)Verifica rapida
Qual è la scelta predefinita migliore per un file di configurazione che gli sviluppatori modificano manualmente e in cui desiderano usare commenti?
Riepilogo: scegliere un formato
Ora può scegliere lo strumento giusto:
- JSON: API, scambio di dati, equilibrio
- CSV: tabelle piatte, fogli di calcolo, compattezza
- YAML: configurazione, leggibilità, commenti, annidamento
- Tutti vengono analizzati nelle stesse strutture Ruby, quindi la conversione è semplice
require 'yaml'
require 'json'
puts(YAML.load('a: 1').to_json)Domande Frequenti
La lezione «Scegliere un formato» è gratuita?
Sì — il testo completo di «Scegliere un formato» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Scegliere un formato»?
Compromessi Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Scegliere un formato»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Leggere e scrivere JSON
- Lavorare con CSV
- Configurazione YAML
- Scegliere un formato