module Rattletrap.Utility.Json
  ( module Rattletrap.Utility.Json
  , Aeson.FromJSON(parseJSON)
  , Aeson.ToJSON(toJSON)
  , Aeson.Value
  , Aeson.object
  , Aeson.withObject
  , Aeson.withText
  ) where

import qualified Data.Aeson as Aeson
import qualified Data.Aeson.Types as Aeson
import qualified Data.Text as Text

required
  :: Aeson.FromJSON value => Aeson.Object -> String -> Aeson.Parser value
required :: Object -> String -> Parser value
required Object
object String
key = Object
object Object -> Text -> Parser value
forall a. FromJSON a => Object -> Text -> Parser a
Aeson..: String -> Text
Text.pack String
key

optional :: Aeson.FromJSON value => Aeson.Object -> String -> Aeson.Parser (Maybe value)
optional :: Object -> String -> Parser (Maybe value)
optional Object
object String
key = Object
object Object -> Text -> Parser (Maybe value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Aeson..:? String -> Text
Text.pack String
key

pair :: (Aeson.ToJSON value, Aeson.KeyValue pair) => String -> value -> pair
pair :: String -> value -> pair
pair String
key value
value = String -> Text
Text.pack String
key Text -> value -> pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Aeson..= value
value