Incolla F# a sinistra e clicca "Converti" — lo trasformiamo in JSONIncolla il codice F#

Cosa fa questo tool

Se hai un record o una union discriminata in F# e ti serve un payload JSON per un test, una chiamata HTTP o un'integrazione .NET, scrivere il body a mano è una scocciatura. Incolla l'F# qui e ti torna JSON valido. Un record, una union con qualche caso, o un intero modulo — stesso flusso.

Il convertitore segue il comportamento delle librerie JSON usate dalla maggior parte del codice F#. System.Text.Json con il converter F#, Newtonsoft.Json e Thoth.Json trasformano i campi dei record in chiavi JSON — qui succede esattamente questo. int, float, decimal e bigint diventano numeri JSON. bool resta un booleano. DateTime e DateTimeOffset escono come stringhe ISO-8601. string option emette il valore quando è Some x o null quando è None.

Le union discriminate vengono serializzate con un discriminatore perché il JSON faccia round-trip pulito. Un type Status = | Paid | Refunded of Guid esce come {"Case":"Refunded","Fields":["..."]}, oppure in forma taggata custom quando ci sono attributi JsonUnionCase — in linea con ciò che producono i serializer del team dotnet/fsharp. List, array e sequence diventano array JSON. Map<string, 'T> diventa un oggetto JSON. Le tuple diventano array JSON. Se vuoi un approfondimento sulla modellazione idiomatica F#, vale la pena mettere tra i preferiti fsharpforfunandprofit.com.

Come si usa

Tre passaggi. Funziona uguale sia che incolli un record o un Domain.fs intero.

1

Incolla il tuo F# (o prova l'esempio)

Butta il tuo F# così com'è nell'editor a sinistra. Un record, una union discriminata, un'istanza di record con sintassi { ... }, o più tipi — tutto va bene. Clicca Carica esempio per un caso realistico.

Lascia pure le dichiarazioni module, namespace, open e gli attributi — il parser ignora quello che non gli serve. La reference ufficiale del linguaggio F# è un buon backup.

2

Clicca Converti

Clicca il pulsante verde Converti. Il tool legge l'F#, percorre ogni campo dei record e ogni caso delle union, e produce il JSON in una sola passata. Durante l'esecuzione compare un piccolo indicatore di caricamento.

3

Copia il JSON

Il pannello a destra si riempie di JSON indentato. Incollalo in una request Giraffe o Saturn, in una fixture xUnit, in un test Fable, o nella documentazione della tua API.

Quando serve davvero

Fixture di test Giraffe / Saturn

Ti serve un body JSON da POSTare verso un endpoint Giraffe in un test. Incolla il record del comando, prendi il payload, mettilo nello spec.

Mock per front-end Fable

Trasforma i tuoi record di dominio F# in risposte JSON mock per un front-end Fable o Elmish — basta oggetti JS fatti a mano che si scostano dai tipi.

Payload per Azure Functions

Genera il body JSON che ti serve per chiamare una Azure Function scritta in F# — comodo quando stai iterando sulla forma dell'input.

Docs allineate ai tuoi tipi

Produci esempi JSON per la documentazione API o un README direttamente dai tuoi record veri, così i docs non restano mai indietro.

Domande frequenti

Come vengono serializzati i tipi Option?

Some x diventa il valore x; None diventa null in JSON. Corrisponde al comportamento di default di Thoth.Json e del converter F# in System.Text.Json.

Come appaiono le union discriminate in JSON?

Di default: {"Case":"CaseName","Fields":[...]} — il formato taggato che fa round-trip verso F#. Se il codice usa attributi custom (JsonUnionCase o simili), il converter li rispetta e emette la forma su misura al loro posto.

Come gestisce DateTime, DateTimeOffset, Guid?

DateTime e DateTimeOffset escono come stringhe ISO-8601. Guid è una stringa hex standard 8-4-4-4-12. Corrisponde a ciò che fornisce System.Text.Json di default.

List, array, map — come vengono mappati?

list, array e seq diventano tutti array JSON. Map<string, 'T> diventa un oggetto JSON. Le tuple diventano array JSON di tipi misti, come producono i serializer .NET.

Posso incollare un intero modulo?

Sì. Ogni record e union top-level diventa una propria entry JSON, con i record annidati espansi. Vengono raccolti anche i let-binding che costruiscono valori d'esempio — utile quando hai un modulo di test-data.

Il mio codice viene salvato?

Il tuo F# viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Per codice di dominio sensibile, rivedilo prima di incollarlo.

Altri tool che possono servirti

F# to JSON è un pezzo. Questi ci vanno bene insieme: