Haskell:
JSON के साथ काम करना

कैसे:

Haskell में JavaScript की तरह JSON के लिए अंतर्निर्मित समर्थन नहीं होता, लेकिन Aeson जैसी तृतीय-पक्ष पुस्तकालयों की मदद से, JSON के साथ कार्य करना सीधा हो जाता है। Aeson एन्कोडिंग (Haskell मूल्यों को JSON में बदलने) और डिकोडिंग (JSON को Haskell मूल्यों में पार्सिंग करने) के लिए उच्च-स्तरीय और निम्न-स्तरीय दोनों कार्य प्रदान करता है।

Aeson को इंस्टॉल करना

पहले, अपनी प्रोजेक्ट की निर्भरता में Aeson को जोड़ें, अपनी .cabal फाइल को अपडेट करके या Stack या Cabal का प्रत्यक्ष उपयोग करके:

cabal update && cabal install aeson

या, अगर आप Stack का उपयोग कर रहे हैं:

stack install aeson

JSON पार्सिंग

चलिए JSON डेटा को Haskell प्रकार में डिकोड करने का एक बुनियादी उदाहरण से शुरू करते हैं। मान लीजिए हमारे पास एक व्यक्ति को दर्शाने वाला निम्न JSON है:

{
  "name": "John Doe",
  "age": 30
}

पहले, एक संबंधित Haskell डेटा प्रकार को परिभाषित करें और इसे FromJSON का एक उदाहरण बनाएँ:

{-# LANGUAGE DeriveGeneric #-}

import GHC.Generics (Generic)
import Data.Aeson (FromJSON, decode)
import qualified Data.ByteString.Lazy as B

data Person = Person
  { name :: String
  , age  :: Int
  } deriving (Generic, Show)

instance FromJSON Person

-- एक फाइल से JSON को डिकोड करने वाला फंक्शन
decodePerson :: FilePath -> IO (Maybe Person)
decodePerson filePath = do
  personJson <- B.readFile filePath
  return $ decode personJson

उपयोग: माना person.json में ऊपर दिखाए गए JSON डेटा है, चलाएँ:

main :: IO ()
main = do
  maybePerson <- decodePerson "person.json"
  print maybePerson

नमूना आउटपुट:

Just (Person {name = "John Doe", age = 30})

Haskell मूल्यों को JSON के रूप में एन्कोडिंग

एक Haskell मूल्य को वापस JSON में बदलने के लिए, आपको अपने प्रकार को ToJSON का एक उदाहरण बनाना होगा और फिर encode का उपयोग करें।

import Data.Aeson (ToJSON, encode)
import GHC.Generics (Generic)

-- मान लीजिए पहले से मौजूद Person प्रकार

instance ToJSON Person

encodePerson :: Person -> B.ByteString
encodePerson = encode

main :: IO ()
main = do
  let person = Person "Jane Doe" 32
  putStrLn $ show $ encodePerson person

नमूना आउटपुट:

{"name":"Jane Doe","age":32}

ये उदाहरण Aeson का उपयोग करके Haskell में JSON के साथ काम करने की मूल बातों को दर्शाते हैं। याद रखें, Aeson बहुत अधिक प्रदान करता है, जिसमें कस्टम पार्सिंग नियम, जटिल नेस्टेड JSON के साथ कार्य करना, और बहुत कुछ शामिल है, जो विभिन्न जरूरतों और परिदृश्यों के लिए उपयुक्त है।