Lim inn Ruby til venstre og trykk på "Konverter" — så gjør vi det om til JSONLim inn Ruby-kode

Hva verktøyet gjør

Hvis du har en Ruby-klasse med en haug attributter og trenger en JSON-payload til en test, et API-kall eller en fixture, så er det rett og slett kjip jobb å slå sammen hashen for hånd. Lim inn Ruby her og få gyldig JSON tilbake med hvert felt bevart. Enten det er én Order-klasse, en nestet Customer med addresses, eller en hel fil med model definitions fra Rails — outputet matcher det du ville fått fra to_json i runtime.

Konverteren forstår hvordan Ruby faktisk serialiserer. json stdlib gjør :symbol-nøkler om til strings (fordi JSON kun har string-nøkler), nil blir null, og Time / Date kommer ut som ISO-8601-strings. Hashes med symbol-nøkler og string-nøkler normaliseres begge, og arrays med blandede typer forblir intakte. Nestede instanser — en Address inni en Order — utvides til nestede JSON-objekter, ikke stringifiseres. Detaljene finner du på ruby-doc.org.

Lim inn en hel fil fra en gem eller Rails-appen din, og hver top-level-klasse kommer ut som sin egen JSON-entry, med instance variables som initialize setter tatt med i outputet. attr_accessor, attr_reader og bare @ivars — alt blir plukket opp. Hvis parseren ser en Struct eller en OpenStruct, behandler den medlemmene på samme måte. Metoder hoppes over — kun data havner i JSON-en.

Slik bruker du det

Tre steg. Funker likt enten du limer inn noen linjer eller en hel models/-mappe.

1

Lim inn Ruby-en din (eller prøv eksempelet)

Slenge Ruby-en inn i venstre editor som den er. En class definition, en hash literal, flere klasser eller en .new-instans — alt går. Trykk Last inn eksempel hvis du vil se et realistisk eksempel først.

Du trenger ikke trimme koden — la Ruby-syntaksen, require-linjene og kommentarene stå som de er. Parseren ignorerer det som ikke er data. For edge cases er JSON stdlib-dokumentasjonen verdt å lese.

2

Trykk Konverter

Klikk på den grønne Konverter-knappen. Verktøyet leser Ruby-en, bevarer hver klasse og hvert attributt, og produserer JSON-en i én omgang. Du ser en kort lasteindikator mens den kjører.

3

Kopier JSON-en

Høyre panel fylles med innrykket, spec-compliant JSON. Kopier det inn i en Postman-request, en test fixture, en Rails seeds-fil eller API-docsen din.

Når det faktisk redder dagen

Test fixtures for RSpec

Du har en Order-model med 20 attributter og trenger JSON for å stubbe en ekstern tjeneste. Lim inn klassen, få payloaden, kast den i spec-en din.

Seede en Rails-app

Gjør en gjeng <code>Product.new(...)</code>-linjer om til en JSON-seed-fil for db/seeds eller en staging-data-loader — uten å skrive for hånd.

Docs som matcher modellene dine

Generer JSON-eksempler til en README eller API-referanse rett fra Ruby-klassene dine så docsen aldri glir fra koden.

Debugge serialiseringsproblemer

Når <code>to_json</code> oppfører seg rart, lim inn Ruby her for å se den forventede JSON-formen og sammenligne med det appen din faktisk sender.

Vanlige spørsmål

Kan jeg lime inn flere klasser på én gang?

Ja. Lim inn en hel fil. Hver top-level-klasse kommer ut som sin egen JSON-entry, med nestede klasser utvidet til nestede objekter. Metoder ignoreres — kun instance variables og verdiene deres ender i outputet.

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

JSON har kun string-nøkler, så :name blir "name" — samme oppførsel som json stdlib. Hvis du har en hash som blander symbol- og string-nøkler, normaliseres begge til strings i outputet.

Og Time, Date og BigDecimal?

Time og DateTime kommer ut som ISO-8601-strings. Date er en ISO-datostring. BigDecimal blir et JSON-tall. nil er null. Ranges og regexes stringifiseres — resten av standardtypene mapper som Rubys standard-to_json gjør det.

Håndterer den Struct og OpenStruct?

Ja. En Struct med medlemmene :name, :price serialiseres som et JSON-objekt med de nøklene. Det samme for OpenStruct — de dynamiske attributtene plukkes opp og sendes ut.

Lagres koden min?

Ruby-en din sendes til backend for konvertering og lagres ikke — vi logger ikke payloaden. Som alltid med nettverktøy: hvis koden er virkelig sensitiv, kikk gjennom den selv først.

Hva hvis koden har metoder eller blocks?

Metoder og blocks hoppes over — det er ikke data. Kun klassenavnet, instance variables fra initialize og literale verdier ender i JSON-en, så resten av modellen din kommer fortsatt rent gjennom.

Andre verktøy du kanskje trenger

Ruby til JSON er én bit. Disse passer godt sammen med det: