F# til JSON Converter
Lim inn F# records eller unions. Få ren JSON tilbake.
Hva verktøyet gjør
Har du en F#-record eller en discriminated union, og trenger en JSON-payload til en test, et HTTP-kall eller en .NET-integrasjon, så er det kjedelig å skrive bodyen for hånd. Lim inn F#-koden her og få gyldig JSON tilbake. Én record, en union med noen cases, eller en hel modul — samme flyt.
Konverteren følger oppførselen til de JSON-bibliotekene som mesteparten av F#-kode bruker. System.Text.Json med F#-converteren, Newtonsoft.Json og Thoth.Json gjør alle record-felter om til JSON-nøkler — akkurat det som skjer her. int, float, decimal og bigint blir JSON-tall. bool forblir boolean. DateTime og DateTimeOffset kommer ut som ISO-8601-strenger. string option sender ut verdien ved Some x eller null ved None.
Discriminated unions serialiseres med en diskriminator slik at JSON round-tripper rent. Et type Status = | Paid | Refunded of Guid kommer ut som {"Case":"Refunded","Fields":["..."]} eller i en tilpasset tagget form dersom JsonUnionCase-attributter er til stede — i tråd med det serializers fra dotnet/fsharp-teamet produserer. Lists, arrays og sequences blir JSON-arrays. Map<string, 'T> blir et JSON-objekt. Tuples blir JSON-arrays. Vil du grave dypere i idiomatisk F#-modellering, er fsharpforfunandprofit.com verdt et bokmerke.
Slik bruker du det
Tre steg. Funker likt enten du limer inn én record eller en hel Domain.fs.
Lim inn F#-en din (eller prøv eksemplet)
Slipp F#-en din inn som den er i venstre editor. En record, en discriminated union, en record-instans med { ... }-syntaks, eller flere typer — alt går bra. Klikk på Last inn eksempel for et realistisk case.
La gjerne module, namespace, open og attributtdeklarasjoner stå — parseren ignorerer det den ikke trenger. Den offisielle F# language reference er en god backup.
Trykk Konverter
Klikk på den grønne Konverter-knappen. Verktøyet leser F#-koden, går gjennom hvert record-felt og hvert union-case, og produserer JSON i ett jafs. En kort loading-indikator vises mens det kjører.
Kopier JSON-en
Høyre panel fylles med innrykket JSON. Lim den inn i en Giraffe- eller Saturn-request, en xUnit-fixture, en Fable-test, eller i API-dokumentasjonen din.
Når det faktisk kommer godt med
Giraffe / Saturn-testfixtures
Du trenger en JSON-body for å POSTe til et Giraffe-endpoint i en test. Lim inn command-recorden, hent payloaden, inn med den i specen.
Fable front-end-mocker
Gjør F#-domene-recordsene dine om til mockede JSON-svar for en Fable- eller Elmish-frontend — slutt på håndlagde JS-objekter som driver vekk fra typene.
Azure Functions-payloads
Generer JSON-bodyen du trenger for å kalle en Azure Function skrevet i F# — fungerer fint når du itererer på input-formen.
Docs som matcher typene dine
Produser JSON-eksempler til API-dokumentasjon eller en README direkte fra de ekte recordsene dine, så docsen aldri henger etter.
Vanlige spørsmål
Hvordan serialiseres Option types?
Some x blir til verdien x; None blir til JSON null. Det matcher defaultoppførselen til Thoth.Json og F#-converteren i System.Text.Json.
Hvordan ser discriminated unions ut i JSON?
Som default: {"Case":"CaseName","Fields":[...]} — det taggede formatet som round-tripper tilbake til F#. Hvis koden bruker egne attributter (JsonUnionCase eller lignende), respekterer konverteren dem og sender ut den tilpassede formen i stedet.
Hvordan håndteres DateTime, DateTimeOffset, Guid?
DateTime og DateTimeOffset kommer ut som ISO-8601-strenger. Guid er en standard 8-4-4-4-12 hex-streng. Det er det System.Text.Json gir out of the box.
Lists, arrays, maps — hvordan mappes de?
list, array og seq blir alle JSON-arrays. Map<string, 'T> blir et JSON-objekt. Tuples blir JSON-arrays med blandede typer, akkurat som .NET-serializers produserer.
Kan jeg lime inn en hel modul?
Ja. Hver top-level record og union blir sin egen JSON-oppføring, med nestede records utfoldet. let-bindings som bygger sample-verdier plukkes også opp — nyttig hvis du har en testdata-modul.
Blir koden min lagret?
F#-en din sendes til backenden for konvertering og lagres ikke — vi logger ikke payloaden. For sensitiv domenekode: se over den før du limer inn.
Andre verktøy du kanskje trenger
F# til JSON er én bit. Disse passer godt sammen med det: