packages feed

netease-fm-1.2.2: lib/Data/Aeson/Extra.hs

module Data.Aeson.Extra (
  encodeJSON
, onObject
, onArray
) where

import qualified Data.Aeson as JSON
import qualified Data.Aeson.Encode as JSON
import qualified Data.Aeson.Types as JSON
import qualified Data.ByteString as BS
import qualified Data.ByteString.Builder as BB
import qualified Data.ByteString.Lazy as BL
import           Data.Text.Encoding (decodeUtf8)

instance JSON.ToJSON BS.ByteString where
  toJSON = JSON.String . decodeUtf8

encodeJSON :: JSON.Value -> BS.ByteString
encodeJSON = BL.toStrict . BB.toLazyByteString . JSON.encodeToBuilder

onObject :: (JSON.Object -> JSON.Parser a) -> JSON.Value -> JSON.Parser a
onObject = JSON.withObject "Object"

onArray :: (JSON.Array -> JSON.Parser a) -> JSON.Value -> JSON.Parser a
onArray = JSON.withArray "Array"