Wklej F# po lewej i kliknij "Konwertuj" — zmienimy to w JSONWklej kod F#

Co robi to narzędzie

Jeśli masz record albo discriminated union w F# i potrzebujesz payloadu JSON do testu, wywołania HTTP albo integracji z .NET, klepanie body z ręki to upierdliwa robota. Wklej F# tutaj i dostajesz prawidłowy JSON. Jeden record, union z kilkoma case'ami, albo cały moduł — ten sam flow.

Konwerter trzyma się zachowania bibliotek JSON, których używa większość kodu F#. System.Text.Json z converterem F#, Newtonsoft.Json i Thoth.Json zamieniają pola recordów w klucze JSON — i dokładnie to dzieje się tutaj. int, float, decimal i bigint stają się liczbami JSON. bool zostaje booleanem. DateTime i DateTimeOffset wychodzą jako stringi ISO-8601. string option emituje wartość przy Some x albo null przy None.

Discriminated uniony serializują się z dyskryminatorem, żeby JSON ładnie zrobił round-trip. type Status = | Paid | Refunded of Guid wychodzi jako {"Case":"Refunded","Fields":["..."]} albo w customowej tagowanej formie, jeśli są atrybuty JsonUnionCase — zgodnie z tym, co produkują serializery zespołu dotnet/fsharp. Listy, tablice i sequence'y stają się tablicami JSON. Map<string, 'T> staje się obiektem JSON. Krotki stają się tablicami JSON. Jak chcesz głębiej wejść w idiomatyczne modelowanie w F#, warto zabookmarkować fsharpforfunandprofit.com.

Jak tego użyć

Trzy kroki. Działa tak samo, czy wklejasz jeden record, czy cały Domain.fs.

1

Wklej swój F# (albo spróbuj przykładu)

Wrzuć swój F# jak leci do lewego edytora. Record, discriminated union, instancja recordu w składni { ... }, albo kilka typów — wszystko OK. Kliknij Załaduj przykład, żeby zobaczyć realistyczny przypadek.

Spokojnie zostaw deklaracje module, namespace, open i atrybuty — parser olewa to, czego nie potrzebuje. Oficjalna referencja języka F# to dobry backup.

2

Kliknij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie czyta F#, przechodzi przez każde pole recordu i każdy case uniona, i produkuje JSON w jednym przelocie. Podczas działania pojawia się krótki wskaźnik ładowania.

3

Skopiuj JSON

Prawy panel wypełnia się wcięciowym JSON-em. Wklej go w request Giraffe albo Saturna, w fixture xUnita, w test Fable, albo w dokumentację swojego API.

Kiedy to naprawdę ratuje skórę

Fixture testów Giraffe / Saturn

Potrzebujesz body JSON, żeby w teście zrobić POST na endpoint Giraffe. Wklej record komendy, dostajesz payload, wrzucasz do speca.

Mocki front-endu Fable

Zamień swoje domenowe recordy F# w mockowe odpowiedzi JSON dla front-endu Fable albo Elmisha — koniec z klepanymi z ręki obiektami JS, które odklejają się od typów.

Payloady Azure Functions

Wygeneruj body JSON, żeby wywołać Azure Function napisaną w F# — działa super, jak iterujesz nad kształtem inputu.

Docsy zgodne z twoimi typami

Twórz próbki JSON do dokumentacji API albo README bezpośrednio ze swoich prawdziwych recordów, żeby docsy nigdy nie zostały w tyle.

Częste pytania

Jak serializowane są typy Option?

Some x staje się wartością x; None staje się JSON-owym null. Pasuje do domyślnego zachowania Thoth.Json i F#-owego convertera w System.Text.Json.

Jak wyglądają discriminated uniony w JSON-ie?

Domyślnie: {"Case":"CaseName","Fields":[...]} — tagowany format, który robi round-trip z powrotem do F#. Jeśli kod używa customowych atrybutów (JsonUnionCase albo podobnych), konwerter je respektuje i zamiast tego emituje dopasowany kształt.

Jak obsługuje DateTime, DateTimeOffset, Guid?

DateTime i DateTimeOffset wychodzą jako stringi ISO-8601. Guid to standardowy string hex w formacie 8-4-4-4-12. To samo, co domyślnie daje System.Text.Json.

Listy, tablice, mapy — jak się mapują?

list, array i seq stają się tablicami JSON. Map<string, 'T> staje się obiektem JSON. Krotki stają się tablicami JSON z mieszanymi typami, tak jak produkują serializery .NET.

Mogę wkleić cały moduł?

Tak. Każdy top-levelowy record i union staje się własnym wpisem JSON, z rozwiniętymi recordami zagnieżdżonymi. let-bindings konstruujące przykładowe wartości też są łapane — przydatne, jak masz moduł z danymi testowymi.

Czy mój kod jest przechowywany?

Twój F# leci do backendu do konwersji i nie jest persystowany — nie logujemy payloadu. Przy wrażliwym kodzie domenowym warto rzucić okiem przed wklejeniem.

Inne narzędzia, które mogą ci się przydać

F# na JSON to jeden kawałek układanki. Te dobrze z nim grają: