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 পার্স করা
আসুন Haskell টাইপে JSON ডেটা ডিকোড করার একটি বেসিক উদাহরণ দেখি। ধরা যাক আমাদের কাছে নিম্নলিখিত 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 নিয়ে কাজ করা, এবং আরও অনেক কিছু।