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.EdatUtilitzant 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("joan@example.com")
printfn "JSON modificat: %s" (jObject.ToString())
- Exercicis Pràctics
Exercici 1: Serialització i Deserialització
- Crea un tipus
Producteamb els campsNom,PreuiEnEstoc. - Crea una instància de
Productei 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.EnEstocExercici 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
