Lim inn F# til venstre og klikk på "Konverter" — vi gjør det om til JSONLim inn F#-kode

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.

1

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.

2

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.

3

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: