| Copyright | (C) 2016-2025 David M. Johnson |
|---|---|
| License | BSD3-style (see the file LICENSE) |
| Maintainer | David M. Johnson <code@dmj.io> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Miso.JSON
Description
A JSON library specialized to MisoString for performance. Largely based on microaeson.
Uses JS runtime primitives `JSON.stringify()` and `JSON.parse()`.
Synopsis
- data Value
- type Object = Map MisoString Value
- type Pair = (MisoString, Value)
- data Result a
- = Success a
- | Error MisoString
- (.=) :: ToJSON v => MisoString -> v -> Pair
- object :: [Pair] -> Value
- emptyArray :: Value
- emptyObject :: Value
- (.:) :: FromJSON a => Object -> MisoString -> Parser a
- (.:?) :: FromJSON a => Object -> MisoString -> Parser (Maybe a)
- (.:!) :: FromJSON a => Object -> MisoString -> Parser (Maybe a)
- (.!=) :: Parser (Maybe a) -> a -> Parser a
- encode :: ToJSON a => a -> MisoString
- decode :: FromJSON a => MisoString -> Maybe a
- withObject :: MisoString -> (Object -> Parser a) -> Value -> Parser a
- withText :: MisoString -> (MisoString -> Parser a) -> Value -> Parser a
- withArray :: MisoString -> ([Value] -> Parser a) -> Value -> Parser a
- withNumber :: MisoString -> (Double -> Parser a) -> Value -> Parser a
- withBool :: MisoString -> (Bool -> Parser a) -> Value -> Parser a
- class FromJSON a where
- data Parser a
- parseMaybe :: (a -> Parser b) -> a -> Maybe b
- class ToJSON a where
- fromJSON :: FromJSON a => Value -> Result a
- parseEither :: (a -> Parser b) -> a -> Either MisoString b
- eitherDecode :: FromJSON a => MisoString -> Either MisoString a
- typeMismatch :: MisoString -> Value -> Parser a
- encodePretty :: ToJSON a => a -> MisoString
- encodePretty' :: ToJSON a => Config -> a -> MisoString
- defConfig :: Config
- newtype Config = Config {}
- fromJSVal_Value :: JSVal -> IO (Maybe Value)
- toJSVal_Value :: Value -> IO JSVal
- jsonStringify :: JSVal -> IO MisoString
- jsonParse :: MisoString -> IO JSVal
- data Options = Options {
- fieldLabelModifier :: String -> String
- defaultOptions :: Options
- class GToJSON (f :: Type -> Type) where
- genericToJSON :: (Generic a, GToJSON (Rep a)) => Options -> a -> Value
- class GFromJSON (f :: Type -> Type) where
- gParseJSON :: Options -> Value -> Parser (f a)
- genericParseJSON :: (Generic a, GFromJSON (Rep a)) => Options -> Value -> Parser a
- camelTo2 :: Char -> String -> String
JSON
Core JSON types
Constructors
| Number Double | |
| Bool Bool | |
| String MisoString | |
| Array [Value] | |
| Object (Map MisoString Value) | |
| Null |
type Pair = (MisoString, Value) Source #
Constructors
| Success a | |
| Error MisoString |
Instances
Constructors
emptyArray :: Value Source #
The empty JSON Array (i.e. []).
emptyObject :: Value Source #
The empty JSON Object (i.e. {}).
Accessors
Encoding and decoding
encode :: ToJSON a => a -> MisoString Source #
Prism-style parsers
withObject :: MisoString -> (Object -> Parser a) -> Value -> Parser a Source #
withText :: MisoString -> (MisoString -> Parser a) -> Value -> Parser a Source #
withNumber :: MisoString -> (Double -> Parser a) -> Value -> Parser a Source #
Type conversion
class FromJSON a where Source #
Minimal complete definition
Nothing
Methods
Instances
| FromJSON Int16 Source # | |
| FromJSON Int32 Source # | |
| FromJSON Int64 Source # | |
| FromJSON Int8 Source # | |
| FromJSON Word16 Source # | |
| FromJSON Word32 Source # | |
| FromJSON Word64 Source # | |
| FromJSON Word8 Source # | |
| FromJSON Ordering Source # | |
| FromJSON Checked Source # | |
| FromJSON KeyCode Source # | |
| FromJSON PointerType Source # | |
Defined in Miso.Event.Types | |
| FromJSON Value Source # | |
| FromJSON MisoString Source # | |
| FromJSON Integer Source # | |
| FromJSON () Source # | |
| FromJSON Bool Source # | |
| FromJSON Double Source # | |
| FromJSON Float Source # | |
| FromJSON Int Source # | |
| FromJSON Word Source # | |
| FromJSON a => FromJSON (Maybe a) Source # | |
| FromJSON a => FromJSON [a] Source # | |
| FromJSON v => FromJSON (Map MisoString v) Source # | |
| (FromJSON a, FromJSON b) => FromJSON (a, b) Source # | |
| (FromJSON a, FromJSON b, FromJSON c) => FromJSON (a, b, c) Source # | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d) => FromJSON (a, b, c, d) Source # | |
parseMaybe :: (a -> Parser b) -> a -> Maybe b Source #
Minimal complete definition
Nothing
Methods
Instances
| ToJSON Int16 Source # | |
| ToJSON Int32 Source # | |
| ToJSON Int64 Source # | Possibly lossy due to conversion to |
| ToJSON Int8 Source # | |
| ToJSON Word16 Source # | |
| ToJSON Word32 Source # | |
| ToJSON Word64 Source # | Possibly lossy due to conversion to |
| ToJSON Word8 Source # | |
| ToJSON Value Source # | |
| ToJSON MisoString Source # | |
| ToJSON Key Source # | |
| ToJSON Integer Source # | Possibly lossy due to conversion to |
| ToJSON () Source # | |
| ToJSON Bool Source # | |
| ToJSON Char Source # | |
| ToJSON Double Source # | |
| ToJSON Float Source # | |
| ToJSON Int Source # | |
| ToJSON Word Source # | |
| ToJSON a => ToJSON (Maybe a) Source # | |
| ToJSON a => ToJSON [a] Source # | |
| ToJSON v => ToJSON (Map MisoString v) Source # | |
| (ToJSON a, ToJSON b) => ToJSON (a, b) Source # | |
| (ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON (a, b, c, d) Source # | |
Misc.
parseEither :: (a -> Parser b) -> a -> Either MisoString b Source #
eitherDecode :: FromJSON a => MisoString -> Either MisoString a Source #
typeMismatch :: MisoString -> Value -> Parser a Source #
Pretty
encodePretty :: ToJSON a => a -> MisoString Source #
encodePretty' :: ToJSON a => Config -> a -> MisoString Source #
FFI
jsonStringify :: JSVal -> IO MisoString Source #
Options
Generics
class GToJSON (f :: Type -> Type) where Source #
Instances
| GToJSON (U1 :: Type -> Type) Source # | |
| GToJSON (V1 :: Type -> Type) Source # | |
| (GToJSON a, GToJSON b) => GToJSON (a :*: b) Source # | |
| (GToJSON a, GToJSON b) => GToJSON (a :+: b) Source # | |
| GToJSON a => GToJSON (C1 i a) Source # | |
| GToJSON a => GToJSON (D1 i a) Source # | |
| (Selector s, ToJSON a) => GToJSON (S1 s (K1 i a :: Type -> Type)) Source # | |
class GFromJSON (f :: Type -> Type) where Source #
Instances
| GFromJSON (U1 :: Type -> Type) Source # | |
| (GFromJSON a, GFromJSON b) => GFromJSON (a :*: b) Source # | |
| (GFromJSON a, GFromJSON b) => GFromJSON (a :+: b) Source # | |
| GFromJSON a => GFromJSON (C1 i a) Source # | |
| GFromJSON a => GFromJSON (D1 i a) Source # | |
| (Selector s, FromJSON a) => GFromJSON (S1 s (K1 i a :: Type -> Type)) Source # | |