json-ast-0.3.2: library/JSONAST.hs
{-|
This module will never contain any namespace conflicts with Prelude,
so it can be imported unqualified.
-}
module JSONAST where
import Prelude
import Data.Data (Data, Typeable)
import Data.HashMap.Strict (HashMap)
import Data.Vector (Vector)
import Data.Text (Text)
import Data.Scientific (Scientific)
{-|
JSON value abstract syntax tree.
It is intended to be used instead of \"aeson\" @Value@ as lingua franca
for JSON libraries, removing the need to depend on \"aeson\" when all that's needed
is a representation of a JSON value.
Note that this datastructure is representationally identical to \"aeson\" @Value@.
Meaning that conversions between them can be made at 0 performance cost,
(using the 'Unsafe.Coerce.unsafeCoerce' function).
The \"aeson-json-ast\" package provides a typed interface for such conversions.
-}
data JSON =
JSON_Object !(HashMap Text JSON) |
JSON_Array !(Vector JSON) |
JSON_String !Text |
JSON_Number !Scientific |
JSON_Bool !Bool |
JSON_Null
deriving (Eq, Read, Show, Typeable, Data)