F# till JSON Converter
Klistra in F# records eller unions. Få tillbaka ren JSON.
Vad verktyget gör
Har du en F#-record eller en discriminated union och behöver en JSON-payload för ett test, ett HTTP-anrop eller en .NET-integration, så är det tråkigt att skriva bodyn för hand. Klistra in F#-koden här så får du tillbaka giltig JSON. En record, en union med några cases, eller en hel modul — samma flöde.
Konverteraren följer beteendet hos de JSON-bibliotek som de flesta F#-koder använder. System.Text.Json med F#-convertern, Newtonsoft.Json och Thoth.Json gör alla om record-fält till JSON-nycklar — precis det som händer här. int, float, decimal och bigint blir JSON-nummer. bool förblir boolean. DateTime och DateTimeOffset kommer ut som ISO-8601-strängar. string option emittar värdet vid Some x eller null vid None.
Discriminated unions serialiseras med en diskriminator så att JSON round-trippar rent. Ett type Status = | Paid | Refunded of Guid kommer ut som {"Case":"Refunded","Fields":["..."]} eller i en egen taggad form om JsonUnionCase-attribut finns — matchande det som serializers från dotnet/fsharp-teamet producerar. Lists, arrays och sequences blir JSON-arrayer. Map<string, 'T> blir ett JSON-objekt. Tuples blir JSON-arrayer. Vill du gräva djupare i idiomatisk F#-modellering är fsharpforfunandprofit.com värd ett bokmärke.
Så här gör du
Tre steg. Funkar likadant oavsett om du klistrar in en record eller ett helt Domain.fs.
Klistra in din F# (eller testa exemplet)
Släpp ner din F# som den är i vänstra editorn. En record, en discriminated union, en record-instans med { ... }-syntax, eller flera typer — allt funkar. Klicka på Ladda exempel för ett realistiskt fall.
Låt gärna module-, namespace-, open- och attributdeklarationer stå kvar — parsern ignorerar det den inte behöver. Officiella F# language reference är en bra backup.
Klicka Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget läser F#-koden, går igenom varje record-fält och union-case och producerar JSON i en svep. En kort laddningsindikator visas medan det körs.
Kopiera JSON
Högerpanelen fylls med indenterad JSON. Klistra in den i en Giraffe- eller Saturn-request, en xUnit-fixture, ett Fable-test, eller din API-dokumentation.
När det faktiskt kommer väl till pass
Giraffe / Saturn-testfixtures
Du behöver en JSON-body för att POSTa till en Giraffe-endpoint i ett test. Klistra in command-recorden, hämta payloaden, släng in den i specen.
Fable front-end-mockar
Gör om dina F#-domän-records till mockade JSON-svar för en Fable- eller Elmish-frontend — slut på handrullade JS-objekt som glider iväg från typerna.
Azure Functions-payloads
Generera den JSON-body du behöver för att anropa en Azure Function skriven i F# — bra när du itererar på inputens form.
Docs som matchar dina typer
Producera JSON-exempel för API-dokumentation eller ett README direkt från dina riktiga records, så att docsen aldrig hamnar efter.
Vanliga frågor
Hur serialiseras Option types?
Some x blir värdet x; None blir JSON null. Det matchar defaultbeteendet hos Thoth.Json och F#-convertern i System.Text.Json.
Hur ser discriminated unions ut i JSON?
Default: {"Case":"CaseName","Fields":[...]} — det taggade formatet som round-trippar tillbaka till F#. Om koden använder egna attribut (JsonUnionCase eller liknande) respekterar konverteraren dem och emittar den skräddarsydda formen istället.
Hur hanteras DateTime, DateTimeOffset, Guid?
DateTime och DateTimeOffset kommer ut som ISO-8601-strängar. Guid är en standard 8-4-4-4-12 hex-sträng. Det är vad System.Text.Json ger out of the box.
Lists, arrays, maps — hur mappas de?
list, array och seq blir alla JSON-arrayer. Map<string, 'T> blir ett JSON-objekt. Tuples blir JSON-arrayer med blandade typer, precis som .NET-serializers producerar.
Kan jag klistra in en hel modul?
Ja. Varje top-level record och union blir sin egen JSON-post, med nästlade records expanderade. let-bindings som bygger sample-värden plockas också upp — praktiskt om du har en testdata-modul.
Sparas min kod?
Din F# skickas till backenden för konvertering och persisteras inte — vi loggar inte payloaden. För känslig domänkod, granska den innan du klistrar in.
Andra verktyg du kan behöva
F# till JSON är en pusselbit. De här passar bra ihop med den: