Ruby til JSON-konverter
Indsæt Ruby-klasser, hashes eller objekter. Få ren JSON tilbage.
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.
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.
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.
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: