Converti JSON in Ruby Hash Online
Converti dati JSON in codice Ruby: Hash, Struct o OpenStruct. Direttamente nel browser, senza inviare dati a server.
{
name: "John",
age: 30,
active: true,
tags: [
"ruby",
"rails"
],
address: {
city: "Tokyo",
zip: "100-0001"
}
}Cosa puoi fare
Trasforma JSON in codice Ruby pronto all'uso
Tre formati di output
Scegli tra Hash nativo, Struct tipizzato e OpenStruct dinamico a seconda delle tue esigenze.
100% privato
La conversione avviene nel browser. Il tuo JSON non viene mai trasmesso a server remoti.
Conversione accurata
Tipi JSON mappati correttamente: null diventa nil, booleani, Integer, Float e Symbol per le chiavi.
Risultato immediato
Nessun server da attendere. Il codice Ruby è pronto non appena incolli il JSON.
Come funziona
Tre passaggi, senza complicazioni
Incolla il tuo JSON
Copia e incolla il tuo JSON nell'editor. Supporta oggetti, array annidati, stringhe, numeri, booleani e null. Fino a 500 KB.
Scegli il tipo di output Ruby
Seleziona Hash nativo Ruby (il tipo di default), Struct (per oggetti tipizzati con accesso tramite metodi), o OpenStruct (per oggetti flessibili con accesso dot-notation dinamico).
Copia il codice Ruby
Il codice Ruby è pronto immediatamente nell'editor di output. Clicca per copiarlo negli appunti e incollarlo nel tuo progetto.
FAQ
Hai delle domande?
Hash è la struttura dati chiave-valore nativa di Ruby, equivalente agli oggetti JavaScript o ai dict Python. Le chiavi possono essere Symbol (il tipo più usato in Ruby moderno, ad esempio :name) o String. L'accesso ai valori avviene con hash[:name] o hash['name']. Struct è una classe Ruby che definisce un insieme fisso di attributi con nomi predeterminati, accessibili come metodi dell'istanza. Ad esempio, Person = Struct.new(:name, :age) crea una classe con i metodi name e age. Struct è più efficiente di Hash per oggetti con struttura fissa. OpenStruct (dalla libreria standard ostruct) è un oggetto che accetta attributi dinamici definiti a runtime: os = OpenStruct.new(name: 'Alice') crea un oggetto con il metodo os.name disponibile immediatamente senza dichiarazione preventiva.
Usa Struct quando hai oggetti con una struttura fissa e ben definita che si ripete nel codice: value objects, entità di dominio, DTO (Data Transfer Objects). Struct offre accesso tramite metodo (object.attribute) invece di operatore bracket (hash[:attribute]), rende esplicita la struttura dell'oggetto nel codice, include automaticamente l'implementazione di == per il confronto per valore, e può essere estesa con metodi personalizzati come una classe normale. Usa Hash quando la struttura è variabile o sconosciuta a design time, per configurazioni generiche, o quando l'overhead di definire una Struct non è giustificato per oggetti usa-e-getta.
OpenStruct ha alcune limitazioni di cui è bene essere consapevoli. È significativamente più lento di Hash e Struct per operazioni di lettura e scrittura, perché ogni accesso a un attributo trigghera una method_missing o una chiamata a define_method dinamicamente. Nelle versioni più recenti di Ruby (3.0+), OpenStruct è deprecato come parte della libreria standard in favore di soluzioni più esplicite. In applicazioni Rails o Sinatra su larga scala, l'uso massiccio di OpenStruct può impattare le performance. Per oggetti semplici in script, test o configurazioni, OpenStruct è comunque conveniente e non crea problemi pratici.
Le chiavi JSON sono sempre stringhe (definite con doppie virgolette secondo la specifica RFC 8259). In Ruby, la convenzione moderna è usare Symbol per le chiavi degli Hash: :name, :user_id, :created_at. Il convertitore trasforma le chiavi stringa JSON in Symbol Ruby usando la notazione simbolo standard. Ad esempio, la chiave JSON user_id diventa :user_id in Ruby. Per chiavi JSON con caratteri non validi per i Symbol (come spazi o trattini, ad esempio user-name), il convertitore usa la notazione stringa come chiave o la trasforma in snake_case secondo le convenzioni Ruby.
Sì. I tipi JSON mappano direttamente ai tipi Ruby: null JSON diventa nil Ruby. true e false JSON diventano true e false Ruby (i soli valori booleani di Ruby). I numeri interi JSON (senza punto decimale) diventano Integer Ruby. I numeri con punto decimale diventano Float Ruby. Le stringhe JSON diventano String Ruby. Gli array JSON diventano Array Ruby. Gli oggetti JSON diventano Hash (o Struct/OpenStruct a seconda della scelta).
No. La conversione avviene interamente nel browser tramite JavaScript. Il tuo JSON non viene mai trasmesso a server remoti. Questo è importante quando il JSON contiene dati sensibili come configurazioni di produzione, credenziali di test, o dati di utenti.
Convertire JSON in Ruby: Hash, Struct, OpenStruct e best practice
JSON (JavaScript Object Notation, standard ECMA-404 e RFC 8259) è il formato di scambio dati dominante nelle API REST moderne, ma il suo mapping verso le strutture dati Ruby non è diretto come in linguaggi con tipi dinamici simili. Ruby ha tre strutture principali per rappresentare oggetti strutturati. Hash (classe core di Ruby, disponibile in tutti i progetti senza require) è una mappa chiave-valore con accesso O(1) tramite tabella hash. In Ruby moderno, le chiavi Symbol (come :user_id) sono preferite alle chiavi String per gli hash interni perché i Symbol sono oggetti immutabili internati (singleton): due Symbol con lo stesso nome sono lo stesso oggetto in memoria (checked with object_id), riducendo l'allocazione e il garbage collection rispetto alle String.
Struct (classe core di Ruby, Module::Struct) è un generatore di classi che crea nuove classi con attributi predefiniti: Person = Struct.new(:name, :age) equivale a definire una classe con attr_accessor :name, :age, un costruttore che accetta i valori posizionali, e implementazioni di == (confronto per valore), to_s, inspect e members (lista degli attributi). Struct è ideale per value objects e DTO nel pattern DDD (Domain-Driven Design). OpenStruct (require 'ostruct', parte della libreria standard) usa method_missing e define_method per creare getter e setter dinamicamente al primo accesso: os = OpenStruct.new(json_hash) crea un oggetto i cui attributi sono accessibili con dot-notation. La principale differenza pratica tra Struct e OpenStruct è che Struct richiede la definizione esplicita degli attributi a compile time, mentre OpenStruct li accetta dinamicamente a runtime.
In applicazioni Ruby on Rails, la libreria ActiveSupport fornisce HashWithIndifferentAccess (una sottoclasse di Hash che accetta sia Symbol che String come chiavi in modo equivalente), molto usata per i parametri dei controller e le risposte JSON delle API. Il metodo JSON.parse di Ruby (dalla libreria standard json, require 'json') restituisce per default Hash con chiavi String; il parametro symbolize_names: true lo cambia in Symbol. Rails e ActiveSupport aggiungono il metodo with_indifferent_access e deep_symbolize_keys per trasformazioni ricorsive. Per il parsing di JSON in strutture Ruby tipizzate in applicazioni grandi, librerie come dry-struct (da dry-rb) o Sorbet Struct offrono schema validation, type checking e performance superiori a OpenStruct, con il vantaggio aggiuntivo della documentazione esplicita della struttura dei dati nel codice.