Convertitore F# to JSON
Incolla record o union F#. Ti torna JSON pulito.
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.
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.
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.
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: