- Renders JSON to String
Haskell value has a JSON string:
HASKELL value JSON string (toString . toJson) ------------------------------- ----------------------------- Just "bla" :: Maybe String "bla" Nothing :: Maybe String null Left 1 :: Either Int Int [[1], []] Right 1 :: Either Int Int [[], [1]] 'a' :: Char 97 () :: () [] (1, "bla") :: (Int, String) [1, "bla"] fromList [1,2,3,4] :: Set Int [1, 2, 3, 4] fromList [("0",0),("1",10),("2",20)] {"0": 0, "1": 10, "2": 20} :: Map String Int
- Conversion haskell values from and to JSON
This module provides many instances classes FromJson
and ToJson
for haskell data types.
See instances class ToJson
for SQL (HDBC) in module Database.HDBC.JSON2
(package json2-hdbc).
Adding Instance class ToJson or FromJson
Transformation of algebraic product in Json
. For example:
data Person = Person {name :: String, age:: Int} deriving (Typeable, Show, Eq)
instance ToJson Person where toJson (Person s n) = toJson [toJson s, toJson n]
instance FromJson Person where safeFromJson (JArray [js, jn]) = return $ Person (fromJson js) (fromJson jn) safeFromJson x = mkError x
Converting Bounded
and Enum
values to Json. For example:
data Color = Red | Green | Blue | Black deriving (Typeable, Show, Eq, Enum, Bounded)
instance ToJson Color where toJson = JNumber . toRational . fromEnum instance FromJson Color where safeFromJson (JNumber x) = checkBoundsEnum (toEnum . round) x safeFromJson x = mkError x
- module Data.JSON2.Pretty
- module Data.JSON2.Internal
- data Json
- type Jsons = [Json]
- toString :: Json -> String
- class Typeable a => ToJson a where
- class Typeable a => FromJson a where
- safeFromJson :: Json -> ConvResult a
- fromJson :: FromJson a => Json -> a
- emptyObj :: Json
- (.=) :: (ToJson v, Typeable v) => String -> v -> Json
- mkObj :: (ToJson v, Typeable v) => [(String, v)] -> Json
- (+=) :: Json -> Json -> Json
- merges :: [Json] -> Json
- mergeRec :: Json -> Json -> Json
- projectionObj :: [String] -> Json -> Jsons
Re-export modules
module Data.JSON2.Pretty
module Data.JSON2.Internal
Base data types
data Json
Renders JSON to string
Conversion haskell values from and to JSON
class Typeable a => ToJson a whereSource
Class for conversion from Json
.
ToJson Bool | |
ToJson Char | |
ToJson Double | |
ToJson Float | |
ToJson Int | |
ToJson Int8 | |
ToJson Int16 | |
ToJson Int32 | |
ToJson Int64 | |
ToJson Integer | |
ToJson Rational | |
ToJson Word | |
ToJson Word8 | |
ToJson Word16 | |
ToJson Word32 | |
ToJson Word64 | |
ToJson String | |
ToJson () | |
ToJson ByteString | |
ToJson ByteString | |
ToJson Json | |
ToJson LocalTime | |
ToJson ZonedTime | |
ToJson TimeOfDay | |
ToJson TimeZone | |
ToJson UTCTime | |
ToJson NominalDiffTime | |
ToJson Day | |
ToJson a => ToJson [a] | |
ToJson a => ToJson (Maybe a) | |
ToJson a => ToJson (Set a) | |
(ToJson a, ToJson b) => ToJson (Either a b) | |
(ToJson t1, ToJson t2) => ToJson (t1, t2) | |
ToJson v => ToJson (Map String v) | |
(ToJson t1, ToJson t2, ToJson t3) => ToJson (t1, t2, t3) | |
(ToJson t1, ToJson t2, ToJson t3, ToJson t4) => ToJson (t1, t2, t3, t4) | |
(ToJson t1, ToJson t2, ToJson t3, ToJson t4, ToJson t5) => ToJson (t1, t2, t3, t4, t5) |
class Typeable a => FromJson a whereSource
Class for conversion from Json
.
safeFromJson :: Json -> ConvResult aSource
FromJson Bool | |
FromJson Char | |
FromJson Double | |
FromJson Float | |
FromJson Int | |
FromJson Int8 | |
FromJson Int16 | |
FromJson Int32 | |
FromJson Int64 | |
FromJson Integer | |
FromJson Rational | |
FromJson Word | |
FromJson Word8 | |
FromJson Word16 | |
FromJson Word32 | |
FromJson Word64 | |
FromJson String | |
FromJson () | |
FromJson ByteString | |
FromJson ByteString | |
FromJson Json | |
FromJson LocalTime | |
FromJson ZonedTime | |
FromJson TimeOfDay | |
FromJson TimeZone | |
FromJson UTCTime | |
FromJson NominalDiffTime | |
FromJson Day | |
FromJson a => FromJson [a] | |
FromJson a => FromJson (Maybe a) | |
(FromJson a, Ord a) => FromJson (Set a) | |
(FromJson a, FromJson b) => FromJson (Either a b) | |
(FromJson t1, FromJson t2) => FromJson (t1, t2) | |
FromJson v => FromJson (Map String v) | |
(FromJson t1, FromJson t2, FromJson t3) => FromJson (t1, t2, t3) | |
(FromJson t1, FromJson t2, FromJson t3, FromJson t4) => FromJson (t1, t2, t3, t4) | |
(FromJson t1, FromJson t2, FromJson t3, FromJson t4, FromJson t5) => FromJson (t1, t2, t3, t4, t5) |
Building JSON objects
mkObj :: (ToJson v, Typeable v) => [(String, v)] -> JsonSource
Create Json
object from list.
ghci> pp $ mkObj [("a", "old"), ("a", "new"), ("bb", "other")] {"a": "new", "bb": "other"}
Merges JSON objects
merges :: [Json] -> JsonSource
Merge Json
objects from list.
ghci> pp $ merges [("a" .= "old"), ("a" .= "new"), ("bb" .= "other")] {"a": "new", "bb": "other"}