DocumentiImmaginiMediaStrumenti PDF

Converti JSON in Ruby Hash Online

Converti dati JSON in codice Ruby: Hash, Struct o OpenStruct. Direttamente nel browser, senza inviare dati a server.

Keys:
{
  name: "John",
  age: 30,
  active: true,
  tags: [
    "ruby",
    "rails"
  ],
  address: {
    city: "Tokyo",
    zip: "100-0001"
  }
}
Processed in your browser

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.

Tre passaggi, senza complicazioni

1

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.

2

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).

3

Copia il codice Ruby

Il codice Ruby è pronto immediatamente nell'editor di output. Clicca per copiarlo negli appunti e incollarlo nel tuo progetto.

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.