| Portability | portable |
|---|---|
| Stability | development |
| Maintainer | mariusz@scrive.com |
| Safe Haskell | None |
Text.JSON.FromJSValue
Contents
Description
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)
Methods
fromJSValue :: JSValue -> Maybe aSource
fromJSValueM :: (JSValueContainer c, MonadReader c m) => m (Maybe a)Source
Instances
| 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.