Indsæt Ruby i venstre side og klik på "Konverter" — så laver vi det om til JSONIndsæt Ruby-kode

Hvad værktøjet gør

Hvis du har en Ruby-klasse med en bunke attributter og skal bruge en JSON-payload til en test, et API-kald eller en fixture, så er det altså noget lorte-arbejde at strikke hashen sammen i hånden. Indsæt Ruby her og få gyldig JSON tilbage med hvert felt bevaret. Uanset om det er en enkelt Order-klasse, en nested Customer med addresses, eller en hel fil med model definitions fra Rails — outputtet matcher det du ville få fra to_json i runtime.

Konverteren forstår hvordan Ruby reelt serialiserer. json stdlib laver :symbol-nøgler om til strings (fordi JSON kun har string-nøgler), nil bliver null, og Time / Date kommer ud som ISO-8601-strings. Hashes med symbol-nøgler og string-nøgler normaliseres begge, og arrays med blandede typer forbliver intakte. Nested instances — en Address inde i en Order — udvides til nested JSON-objekter, ikke stringificeres. Detaljerne står på ruby-doc.org.

Indsæt en hel fil fra en gem eller din Rails-app og hver top-level-klasse kommer ud som sin egen JSON-entry, med instance variables sat i initialize trukket med ind i outputtet. attr_accessor, attr_reader og bare @ivars — det hele bliver fanget. Hvis parseren ser en Struct eller en OpenStruct, behandler den medlemmerne på samme måde. Metoder springes over — kun data ender i JSON'en.

Sådan bruger du det

Tre trin. Virker ens uanset om du indsætter et par linjer eller en hel models/-mappe.

1

Indsæt din Ruby (eller prøv eksemplet)

Smid din Ruby ind i venstre editor som den er. En class definition, en hash literal, flere klasser eller en .new-instans — det hele virker. Klik på Indlæs eksempel hvis du vil se et realistisk eksempel først.

Du behøver ikke skære i koden — lad Ruby-syntaksen, require-linjer og kommentarer stå som de er. Parseren ignorerer det der ikke er data. Til edge cases er JSON stdlib-dokumentationen værd at læse.

2

Tryk Konverter

Klik på den grønne Konverter-knap. Værktøjet læser Ruby, bevarer hver klasse og hvert attribut, og producerer JSON'en i ét hug. Du ser en kort loading-indikator mens det kører.

3

Kopier JSON'en

Højre panel fyldes med indrykket, spec-compliant JSON. Kopier det ind i et Postman-request, en test fixture, en Rails seeds-fil eller dine API-docs.

Hvornår det reelt redder dagen

Test fixtures til RSpec

Du har en Order-model med 20 attributter og skal bruge JSON til at stubbe en ekstern service. Indsæt klassen, hent payloaden, smid den i din spec.

Seed en Rails-app

Lav en flok <code>Product.new(...)</code>-linjer om til en JSON-seed-fil til db/seeds eller en staging-data-loader — uden at taste noget manuelt.

Docs der matcher dine modeller

Generér JSON-eksempler til en README eller API-reference direkte fra dine Ruby-klasser så docsen aldrig driver væk fra koden.

Debug af serialiseringsproblemer

Når <code>to_json</code> opfører sig underligt, indsæt Ruby her for at se den forventede JSON-form og sammenligne med det din app reelt sender.

Ofte stillede spørgsmål

Kan jeg indsætte flere klasser på én gang?

Ja. Indsæt en hel fil. Hver top-level-klasse kommer ud som sin egen JSON-entry, med nested klasser udvidet til nested objekter. Metoder ignoreres — kun instance variables og deres værdier ender i outputtet.

Hvordan håndteres symbols og string-nøgler?

JSON har kun string-nøgler, så :name bliver "name" — samme opførsel som json stdlib. Hvis du har en hash der blander symbol- og string-nøgler, normaliseres begge til strings i outputtet.

Og Time, Date og BigDecimal?

Time og DateTime kommer ud som ISO-8601-strings. Date er en ISO-datostring. BigDecimal bliver et JSON-tal. nil er null. Ranges og regexes stringificeres — resten af standardtyperne mapper som Rubys default-to_json gør det.

Håndterer den Struct og OpenStruct?

Ja. En Struct med medlemmerne :name, :price serialiseres som et JSON-objekt med de nøgler. Samme for OpenStruct — de dynamiske attributter plukkes op og sendes ud.

Bliver min kode gemt?

Din Ruby bliver sendt til backenden til konvertering og lagres ikke — vi logger ikke payloaden. Som altid med online-værktøjer: hvis koden er reelt følsom, så kig den igennem selv først.

Hvad hvis koden har metoder eller blocks?

Metoder og blocks springes over — det er ikke data. Kun klassenavnet, instance variables fra initialize og literale værdier ender i JSON'en, så resten af din model kommer stadig rent igennem.

Andre værktøjer du måske skal bruge

Ruby til JSON er ét stykke. Disse passer godt sammen med det: