Klistra in F# till vänster och klicka på "Konvertera" — vi gör om det till JSONKlistra in F#-kod

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.

1

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.

2

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.

3

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: