Portability | portable |
---|---|
Stability | development |
Maintainer | mariusz@scrive.com |
Safe Haskell | None |
Interface for extracting data from JSValue.
- class FromJSValue a where
- fromJSValue :: JSValue -> Maybe a
- fromJSValueM :: (JSValueContainer c, MonadReader c m) => m (Maybe a)
- jsValueField :: (JSValueContainer c, MonadReader c m, FromJSValue a) => String -> m (Maybe (Maybe a))
- fromJSValueField :: (JSValueContainer c, MonadReader c m, FromJSValue a) => String -> m (Maybe a)
- fromJSValueFieldBase64 :: (JSValueContainer c, MonadReader c m) => String -> m (Maybe ByteString)
- fromJSValueFieldCustom :: (JSValueContainer c, MonadReader c m) => String -> m (Maybe a) -> m (Maybe a)
- fromJSValueCustomMany :: (JSValueContainer c, MonadReader c m) => m (Maybe a) -> m (Maybe [a])
- fromJSValueCustomList :: (JSValueContainer c, MonadReader c m) => [m (Maybe a)] -> m (Maybe [a])
- withJSValue :: Monad m => JSValue -> ReaderT JSValue m a -> m a
Basic Parsing
class FromJSValue a whereSource
Structures that can be parsed
from JSON. Instances must declare either fromJSValue
(parse directly from JSValue
) or fromJSValueM
(uses MonadReader
)
fromJSValue :: JSValue -> Maybe aSource
fromJSValueM :: (JSValueContainer c, MonadReader c m) => m (Maybe a)Source
FromJSValue Bool | |
FromJSValue Int | |
FromJSValue Integer | |
FromJSValue String | |
FromJSValue ByteString | |
FromJSValue JSValue | |
FromJSValue a => FromJSValue [a] | |
FromJSValue a => FromJSValue (Maybe a) | |
(FromJSValue a, FromJSValue b) => FromJSValue (a, b) |
Data Extraction
jsValueField :: (JSValueContainer c, MonadReader c m, FromJSValue a) => String -> m (Maybe (Maybe a))Source
Reading the value that is on some field. Returns Nothing
if
JSON is not an object or field is present but cannot be parsed,
'Just Nothing' if absent, and 'Just (Just a)' otherwise
fromJSValueField :: (JSValueContainer c, MonadReader c m, FromJSValue a) => String -> m (Maybe a)Source
Reading the value that is on some field. With field if current JSON is not object
fromJSValueFieldBase64 :: (JSValueContainer c, MonadReader c m) => String -> m (Maybe ByteString)Source
Version of fromJSValueField
for Base64 encoded data to avoid memory leak.
fromJSValueFieldCustom :: (JSValueContainer c, MonadReader c m) => String -> m (Maybe a) -> m (Maybe a)Source
Generalization of fromJSValueField
. Does not use FromJSValue
instances
fromJSValueCustomMany :: (JSValueContainer c, MonadReader c m) => m (Maybe a) -> m (Maybe [a])Source
Runs parser on each element of underlaying json. Returns Just iff JSON is array.
fromJSValueCustomList :: (JSValueContainer c, MonadReader c m) => [m (Maybe a)] -> m (Maybe [a])Source
Generalization of fromJSValueCustomMany
, where each element of array can have different parser.