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 zoals FromJSON, en codering door ToJSON.

Zie Ook