En aquest tema, aprendrem com treballar amb JSON en F#. JSON (JavaScript Object Notation) és un format de dades lleuger i fàcil de llegir i escriure per a humans, així com fàcil de parsejar i generar per a màquines. És àmpliament utilitzat per a l'intercanvi de dades en aplicacions web.
Continguts
- Introducció a JSON
- Llibreries per treballar amb JSON en F#
- Serialització i Deserialització de JSON
- Manipulació de JSON
- Exercicis pràctics
- Introducció a JSON
JSON és un format de text que utilitza una notació d'objectes de JavaScript per representar estructures de dades. Aquí teniu un exemple de JSON:
{ "nom": "Joan", "edat": 30, "habilitats": ["F#", "C#", "JavaScript"], "adreça": { "carrer": "Carrer Major", "ciutat": "Barcelona" } }
- Llibreries per treballar amb JSON en F#
En F#, podem utilitzar diverses llibreries per treballar amb JSON. Algunes de les més populars són:
- Newtonsoft.Json (Json.NET): Una llibreria molt popular per a la manipulació de JSON en .NET.
- FSharp.Data: Proporciona proveïdors de tipus per treballar amb JSON de manera segura en temps de compilació.
- Serialització i Deserialització de JSON
Utilitzant Newtonsoft.Json
Instal·lació
Primer, hem d'instal·lar la llibreria Newtonsoft.Json
mitjançant NuGet. Podeu fer-ho amb el següent comandament:
Exemple de Codi
A continuació, es mostra com serialitzar i deserialitzar JSON utilitzant Newtonsoft.Json
:
open Newtonsoft.Json type Persona = { Nom: string Edat: int Habilitats: string list Adreça: Adreça } and Adreça = { Carrer: string Ciutat: string } let persona = { Nom = "Joan" Edat = 30 Habilitats = ["F#", "C#", "JavaScript"] Adreça = { Carrer = "Carrer Major"; Ciutat = "Barcelona" } } // Serialització let json = JsonConvert.SerializeObject(persona) printfn "JSON: %s" json // Deserialització let personaDeserialitzada = JsonConvert.DeserializeObject<Persona>(json) printfn "Nom: %s, Edat: %d" personaDeserialitzada.Nom personaDeserialitzada.Edat
Utilitzant FSharp.Data
Instal·lació
Primer, hem d'instal·lar la llibreria FSharp.Data
mitjançant NuGet. Podeu fer-ho amb el següent comandament:
Exemple de Codi
A continuació, es mostra com treballar amb JSON utilitzant FSharp.Data
:
open FSharp.Data type Persona = JsonProvider<""" { "nom": "Joan", "edat": 30, "habilitats": ["F#", "C#", "JavaScript"], "adreça": { "carrer": "Carrer Major", "ciutat": "Barcelona" } } """> let json = """ { "nom": "Joan", "edat": 30, "habilitats": ["F#", "C#", "JavaScript"], "adreça": { "carrer": "Carrer Major", "ciutat": "Barcelona" } } """ let persona = Persona.Parse(json) printfn "Nom: %s, Edat: %d" persona.Nom persona.Edat
- Manipulació de JSON
Exemple de Manipulació
Podem manipular JSON de diverses maneres. A continuació, es mostra un exemple de com afegir un nou camp a un objecte JSON utilitzant Newtonsoft.Json.Linq
:
open Newtonsoft.Json.Linq let json = """ { "nom": "Joan", "edat": 30, "habilitats": ["F#", "C#", "JavaScript"], "adreça": { "carrer": "Carrer Major", "ciutat": "Barcelona" } } """ let jObject = JObject.Parse(json) jObject.["email"] <- JValue("[email protected]") printfn "JSON modificat: %s" (jObject.ToString())
- Exercicis Pràctics
Exercici 1: Serialització i Deserialització
- Crea un tipus
Producte
amb els campsNom
,Preu
iEnEstoc
. - Crea una instància de
Producte
i serialitza-la a JSON. - Deserialitza el JSON a una instància de
Producte
.
Solució
open Newtonsoft.Json type Producte = { Nom: string Preu: float EnEstoc: bool } let producte = { Nom = "Ordinador" Preu = 999.99 EnEstoc = true } // Serialització let json = JsonConvert.SerializeObject(producte) printfn "JSON: %s" json // Deserialització let producteDeserialitzat = JsonConvert.DeserializeObject<Producte>(json) printfn "Nom: %s, Preu: %f, En Estoc: %b" producteDeserialitzat.Nom producteDeserialitzat.Preu producteDeserialitzat.EnEstoc
Exercici 2: Manipulació de JSON
- Afegeix un nou camp
Descripció
a l'objecte JSON del producte creat en l'exercici anterior. - Imprimeix el JSON modificat.
Solució
open Newtonsoft.Json.Linq let json = """ { "Nom": "Ordinador", "Preu": 999.99, "EnEstoc": true } """ let jObject = JObject.Parse(json) jObject.["Descripció"] <- JValue("Un ordinador d'alta gamma") printfn "JSON modificat: %s" (jObject.ToString())
Conclusió
En aquest tema, hem après com treballar amb JSON en F# utilitzant les llibreries Newtonsoft.Json
i FSharp.Data
. Hem vist com serialitzar i deserialitzar JSON, així com com manipular objectes JSON. Els exercicis pràctics ens han ajudat a consolidar aquests conceptes. En el proper tema, explorarem com interactuar amb bases de dades des de F#.
Curs de Programació en F#
Mòdul 1: Introducció a F#
Mòdul 2: Conceptes Bàsics
- Tipus de Dades i Variables
- Funcions i Immutabilitat
- Coincidència de Patrons
- Col·leccions: Llistes, Matrius i Seqüències
Mòdul 3: Programació Funcional
Mòdul 4: Estructures de Dades Avançades
Mòdul 5: Programació Orientada a Objectes en F#
- Classes i Objectes
- Herència i Interfícies
- Barreja de Programació Funcional i Orientada a Objectes
- Mòduls i Espais de Noms
Mòdul 6: Programació Asíncrona i Paral·lela
- Fluxos de Treball Asíncrons
- Biblioteca de Tasques Paral·leles
- MailboxProcessor i Agents
- Patrons de Concurrència
Mòdul 7: Accés i Manipulació de Dades
Mòdul 8: Proves i Depuració
- Proves Unitàries amb NUnit
- Proves Basades en Propietats amb FsCheck
- Tècniques de Depuració
- Perfilat de Rendiment