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

Methods

fromString :: String -> Value #

Show Value Source # 
Instance details

Defined in Miso.JSON

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

Eq Value Source # 
Instance details

Defined in Miso.JSON

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 #

data Result a Source #

Constructors

Success a 
Error MisoString 

Instances

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

Defined in Miso.JSON

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

Methods

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

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

Constructors

(.=) :: ToJSON v => MisoString -> v -> Pair 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 () Source # 
Instance details

Defined in Miso.JSON

Methods

parseJSON :: Value -> Parser () Source #

FromJSON Bool 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 #

data Parser a Source #

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 #

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 () 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 #

(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