miso
Copyright(C) 2016-2025 David M. Johnson
LicenseBSD3-style (see the file LICENSE)
MaintainerDavid M. Johnson <code@dmj.io>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

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

JSON

Core JSON types

data Value Source #

Instances

Instances details
IsString Value Source # 
Instance details

Defined in Miso.JSON.Types

Methods

fromString :: String -> Value #

Show Value Source # 
Instance details

Defined in Miso.JSON.Types

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

Eq Value Source # 
Instance details

Defined in Miso.JSON.Types

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

FromJSVal Value Source # 
Instance details

Defined in Miso.DSL

ToJSVal Value Source # 
Instance details

Defined in Miso.DSL

Methods

toJSVal :: Value -> IO JSVal Source #

FromJSON Value Source # 
Instance details

Defined in Miso.JSON

ToJSON Value Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Value -> Value Source #

FromMisoString Value Source # 
Instance details

Defined in Miso.JSON

ToMisoString Value Source # 
Instance details

Defined in Miso.JSON

data Result a Source #

Constructors

Success a 
Error MisoString 

Instances

Instances details
Alternative Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

empty :: Result a #

(<|>) :: Result a -> Result a -> Result a #

some :: Result a -> Result [a] #

many :: Result a -> Result [a] #

Applicative Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

pure :: a -> Result a #

(<*>) :: Result (a -> b) -> Result a -> Result b #

liftA2 :: (a -> b -> c) -> Result a -> Result b -> Result c #

(*>) :: Result a -> Result b -> Result b #

(<*) :: Result a -> Result b -> Result a #

Functor Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

fmap :: (a -> b) -> Result a -> Result b #

(<$) :: a -> Result b -> Result a #

Monad Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

(>>=) :: Result a -> (a -> Result b) -> Result b #

(>>) :: Result a -> Result b -> Result b #

return :: a -> Result a #

MonadPlus Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

mzero :: Result a #

mplus :: Result a -> Result a -> Result a #

MonadFail Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

fail :: String -> Result a #

Foldable Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

fold :: Monoid m => Result m -> m #

foldMap :: Monoid m => (a -> m) -> Result a -> m #

foldMap' :: Monoid m => (a -> m) -> Result a -> m #

foldr :: (a -> b -> b) -> b -> Result a -> b #

foldr' :: (a -> b -> b) -> b -> Result a -> b #

foldl :: (b -> a -> b) -> b -> Result a -> b #

foldl' :: (b -> a -> b) -> b -> Result a -> b #

foldr1 :: (a -> a -> a) -> Result a -> a #

foldl1 :: (a -> a -> a) -> Result a -> a #

toList :: Result a -> [a] #

null :: Result a -> Bool #

length :: Result a -> Int #

elem :: Eq a => a -> Result a -> Bool #

maximum :: Ord a => Result a -> a #

minimum :: Ord a => Result a -> a #

sum :: Num a => Result a -> a #

product :: Num a => Result a -> a #

Traversable Result Source # 
Instance details

Defined in Miso.JSON.Types

Methods

traverse :: Applicative f => (a -> f b) -> Result a -> f (Result b) #

sequenceA :: Applicative f => Result (f a) -> f (Result a) #

mapM :: Monad m => (a -> m b) -> Result a -> m (Result b) #

sequence :: Monad m => Result (m a) -> m (Result a) #

Monoid (Result a) Source # 
Instance details

Defined in Miso.JSON.Types

Methods

mempty :: Result a #

mappend :: Result a -> Result a -> Result a #

mconcat :: [Result a] -> Result a #

Semigroup (Result a) Source # 
Instance details

Defined in Miso.JSON.Types

Methods

(<>) :: Result a -> Result a -> Result a #

sconcat :: NonEmpty (Result a) -> Result a #

stimes :: Integral b => b -> Result a -> Result a #

Show a => Show (Result a) Source # 
Instance details

Defined in Miso.JSON.Types

Methods

showsPrec :: Int -> Result a -> ShowS #

show :: Result a -> String #

showList :: [Result a] -> ShowS #

Eq a => Eq (Result a) Source # 
Instance details

Defined in Miso.JSON.Types

Methods

(==) :: Result a -> Result a -> Bool #

(/=) :: Result a -> Result a -> Bool #

Constructors

(.=) :: ToJSON v => MisoString -> v -> Pair infixr 8 Source #

object :: [Pair] -> Value Source #

Create a Value from a list of name/value Pairs.

emptyArray :: Value Source #

The empty JSON Array (i.e. []).

emptyObject :: Value Source #

The empty JSON Object (i.e. {}).

Accessors

(.!=) :: Parser (Maybe a) -> a -> Parser a Source #

Encoding and decoding

Prism-style parsers

Type conversion

class FromJSON a where Source #

Minimal complete definition

Nothing

Methods

parseJSON :: Value -> Parser a Source #

default parseJSON :: (Generic a, GFromJSON (Rep a)) => Value -> Parser a Source #

Instances

Instances details
FromJSON Int16 Source # 
Instance details

Defined in Miso.JSON

FromJSON Int32 Source # 
Instance details

Defined in Miso.JSON

FromJSON Int64 Source # 
Instance details

Defined in Miso.JSON

FromJSON Int8 Source # 
Instance details

Defined in Miso.JSON

FromJSON Word16 Source # 
Instance details

Defined in Miso.JSON

FromJSON Word32 Source # 
Instance details

Defined in Miso.JSON

FromJSON Word64 Source # 
Instance details

Defined in Miso.JSON

FromJSON Word8 Source # 
Instance details

Defined in Miso.JSON

FromJSON Ordering Source # 
Instance details

Defined in Miso.JSON

FromJSON Checked Source # 
Instance details

Defined in Miso.Event.Types

FromJSON KeyCode Source # 
Instance details

Defined in Miso.Event.Types

FromJSON PointerType Source # 
Instance details

Defined in Miso.Event.Types

FromJSON Value Source # 
Instance details

Defined in Miso.JSON

FromJSON MisoString Source # 
Instance details

Defined in Miso.JSON

FromJSON Integer Source # 
Instance details

Defined in Miso.JSON

FromJSON Natural Source # 
Instance details

Defined in Miso.JSON

FromJSON () Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser () Source #

FromJSON Bool Source # 
Instance details

Defined in Miso.JSON

FromJSON Char Source # 
Instance details

Defined in Miso.JSON

FromJSON Double Source # 
Instance details

Defined in Miso.JSON

FromJSON Float Source # 
Instance details

Defined in Miso.JSON

FromJSON Int Source # 
Instance details

Defined in Miso.JSON

FromJSON Word Source # 
Instance details

Defined in Miso.JSON

FromJSON a => FromJSON (Maybe a) Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser (Maybe a) Source #

FromJSON a => FromJSON [a] Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser [a] Source #

FromJSON v => FromJSON (Map MisoString v) Source # 
Instance details

Defined in Miso.JSON

(FromJSON a, FromJSON b) => FromJSON (a, b) Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser (a, b) Source #

(FromJSON a, FromJSON b, FromJSON c) => FromJSON (a, b, c) Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser (a, b, c) Source #

(FromJSON a, FromJSON b, FromJSON c, FromJSON d) => FromJSON (a, b, c, d) Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser (a, b, c, d) Source #

newtype Parser a Source #

Constructors

Parser 

Instances

Instances details
Alternative Parser Source # 
Instance details

Defined in Miso.JSON

Methods

empty :: Parser a #

(<|>) :: Parser a -> Parser a -> Parser a #

some :: Parser a -> Parser [a] #

many :: Parser a -> Parser [a] #

Applicative Parser Source # 
Instance details

Defined in Miso.JSON

Methods

pure :: a -> Parser a #

(<*>) :: Parser (a -> b) -> Parser a -> Parser b #

liftA2 :: (a -> b -> c) -> Parser a -> Parser b -> Parser c #

(*>) :: Parser a -> Parser b -> Parser b #

(<*) :: Parser a -> Parser b -> Parser a #

Functor Parser Source # 
Instance details

Defined in Miso.JSON

Methods

fmap :: (a -> b) -> Parser a -> Parser b #

(<$) :: a -> Parser b -> Parser a #

Monad Parser Source # 
Instance details

Defined in Miso.JSON

Methods

(>>=) :: Parser a -> (a -> Parser b) -> Parser b #

(>>) :: Parser a -> Parser b -> Parser b #

return :: a -> Parser a #

MonadPlus Parser Source # 
Instance details

Defined in Miso.JSON

Methods

mzero :: Parser a #

mplus :: Parser a -> Parser a -> Parser a #

MonadFail Parser Source # 
Instance details

Defined in Miso.JSON

Methods

fail :: String -> Parser a #

parseMaybe :: (a -> Parser b) -> a -> Maybe b Source #

class ToJSON a where Source #

Minimal complete definition

Nothing

Methods

toJSON :: a -> Value Source #

default toJSON :: (Generic a, GToJSON (Rep a)) => a -> Value Source #

Instances

Instances details
ToJSON Int16 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Int16 -> Value Source #

ToJSON Int32 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Int32 -> Value Source #

ToJSON Int64 Source #

Possibly lossy due to conversion to Double

Instance details

Defined in Miso.JSON

Methods

toJSON :: Int64 -> Value Source #

ToJSON Int8 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Int8 -> Value Source #

ToJSON Word16 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Word16 -> Value Source #

ToJSON Word32 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Word32 -> Value Source #

ToJSON Word64 Source #

Possibly lossy due to conversion to Double

Instance details

Defined in Miso.JSON

Methods

toJSON :: Word64 -> Value Source #

ToJSON Word8 Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Word8 -> Value Source #

ToJSON Value Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Value -> Value Source #

ToJSON MisoString Source # 
Instance details

Defined in Miso.JSON

ToJSON Key Source # 
Instance details

Defined in Miso.Types

Methods

toJSON :: Key -> Value Source #

ToJSON Integer Source #

Possibly lossy due to conversion to Double

Instance details

Defined in Miso.JSON

Methods

toJSON :: Integer -> Value Source #

ToJSON Natural Source #

Possibly lossy due to conversion to Double

Instance details

Defined in Miso.JSON

Methods

toJSON :: Natural -> Value Source #

ToJSON () Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: () -> Value Source #

ToJSON Bool Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Bool -> Value Source #

ToJSON Char Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Char -> Value Source #

ToJSON Double Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Double -> Value Source #

ToJSON Float Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Float -> Value Source #

ToJSON Int Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Int -> Value Source #

ToJSON Word Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Word -> Value Source #

ToJSON a => ToJSON (Maybe a) Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: Maybe a -> Value Source #

ToJSON a => ToJSON [a] Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: [a] -> Value Source #

ToJSON v => ToJSON (Map MisoString v) Source # 
Instance details

Defined in Miso.JSON

(ToJSON a, ToJSON b) => ToJSON (a, b) Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: (a, b) -> Value Source #

(ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: (a, b, c) -> Value Source #

(ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON (a, b, c, d) Source # 
Instance details

Defined in Miso.JSON

Methods

toJSON :: (a, b, c, d) -> Value Source #

Misc.

parseEither :: (a -> Parser b) -> a -> Either MisoString b Source #

Pretty

newtype Config Source #

Constructors

Config 

Fields

Instances

Instances details
Show Config Source # 
Instance details

Defined in Miso.JSON

Eq Config Source # 
Instance details

Defined in Miso.JSON

Methods

(==) :: Config -> Config -> Bool #

(/=) :: Config -> Config -> Bool #

FFI

Options

data Options Source #

Constructors

Options 

Generics

class GToJSON (f :: Type -> Type) where Source #

Methods

gToJSON :: Options -> [Pair] -> f a -> [Pair] Source #

Instances

Instances details
GToJSON (U1 :: Type -> Type) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> U1 a -> [Pair] Source #

GToJSON (V1 :: Type -> Type) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> V1 a -> [Pair] Source #

(GToJSON a, GToJSON b) => GToJSON (a :*: b) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> (a :*: b) a0 -> [Pair] Source #

(TypeError ('Text "Sum types unsupported") :: Constraint, GToJSON a, GToJSON b) => GToJSON (a :+: b) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> (a :+: b) a0 -> [Pair] Source #

GToJSON a => GToJSON (C1 i a) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> C1 i a a0 -> [Pair] Source #

GToJSON a => GToJSON (D1 i a) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> D1 i a a0 -> [Pair] Source #

(Selector s, ToJSON a) => GToJSON (S1 s (K1 i a :: Type -> Type)) Source # 
Instance details

Defined in Miso.JSON

Methods

gToJSON :: Options -> [Pair] -> S1 s (K1 i a :: Type -> Type) a0 -> [Pair] Source #

class GFromJSON (f :: Type -> Type) where Source #

Methods

gParseJSON :: Options -> Value -> Parser (f a) Source #

Instances

Instances details
GFromJSON (U1 :: Type -> Type) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser (U1 a) Source #

(GFromJSON a, GFromJSON b) => GFromJSON (a :*: b) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser ((a :*: b) a0) Source #

(GFromJSON a, GFromJSON b) => GFromJSON (a :+: b) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser ((a :+: b) a0) Source #

GFromJSON a => GFromJSON (C1 i a) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser (C1 i a a0) Source #

GFromJSON a => GFromJSON (D1 i a) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser (D1 i a a0) Source #

(Selector s, FromJSON a) => GFromJSON (S1 s (K1 i a :: Type -> Type)) Source # 
Instance details

Defined in Miso.JSON

Methods

gParseJSON :: Options -> Value -> Parser (S1 s (K1 i a :: Type -> Type) a0) Source #

Modifiers

Orphan instances