Haskell:
Werken met JSON
Hoe te:
In Haskell, gaan we om met JSON gebruikmakend van de aeson
bibliotheek. Om te beginnen, importeer deze en definieer een type dat overeenkomt met je verwachte JSON-structuur.
{-# LANGUAGE DeriveGeneric #-}
import Data.Aeson
import GHC.Generics
-- Uitgaande van dat we een JSON-object hebben met een "naam" en een "leeftijd"
data Persoon = Persoon
{ naam :: String
, leeftijd :: Int
} afgeleid (Generic, Show)
instantie FromJSON Persoon
instantie ToJSON Persoon
-- JSON-string parsen
main :: IO ()
main = doe
let jsonString = "{\"naam\":\"John\", \"leeftijd\":30}"
let misschienPersoon = decodeer jsonString :: Misschien Persoon
geval misschienPersoon van
Niets -> putStrLn "Fout bij het parsen van JSON."
Gewoon persoon -> print persoon
Uitvoer:
Persoon {naam = "John", leeftijd = 30}
Diepduiken
- Geschiedenis: Het ontwerp van JSON werd beïnvloed door een subset van de JavaScript-syntax, en het won aan populariteit als een eenvoudig alternatief voor XML.
- Alternatieven: Hoewel JSON koning is voor web-API’s, kunnen alternatieven zoals XML, YAML of zelfs Protocol Buffers worden gekozen op basis van context en vereisten.
- Implementatiedetails:
aeson
gebruikt het typesysteem van Haskell om JSON-structuren te matchen met Haskell-typen. Parsen wordt gedaan via typeklassen zoalsFromJSON
, en codering doorToJSON
.
Zie Ook
aeson
pakketdocumentatie: https://hackage.haskell.org/package/aeson- Echte JSON-API’s om mee te oefenen: https://jsonplaceholder.typicode.com/
- JSON-specificatie: https://www.json.org/json-en.html