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

  1. Introducció a JSON
  2. Llibreries per treballar amb JSON en F#
  3. Serialització i Deserialització de JSON
  4. Manipulació de JSON
  5. Exercicis pràctics

  1. 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"
  }
}

  1. 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ó.

  1. 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:

dotnet add package Newtonsoft.Json

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:

dotnet add package FSharp.Data

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

  1. 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())

  1. Exercicis Pràctics

Exercici 1: Serialització i Deserialització

  1. Crea un tipus Producte amb els camps Nom, Preu i EnEstoc.
  2. Crea una instància de Producte i serialitza-la a JSON.
  3. 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

  1. Afegeix un nou camp Descripció a l'objecte JSON del producte creat en l'exercici anterior.
  2. 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#.

© Copyright 2024. Tots els drets reservats