Skip to content
JSON quasiquoter for Haskell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/Data Update GitHub repo Mar 19, 2016
test
.ghci Update README Jun 4, 2014
.gitignore Init commit Apr 16, 2011
.travis.yml Fix warnings Sep 17, 2014
LICENSE Update LICENSE, bump version Jun 3, 2014
README.lhs Update README Jun 4, 2014
README.markdown
Setup.hs Init commit Apr 16, 2011
aeson-qq.cabal Bump version Jun 13, 2017
package.yaml Bump version Jun 13, 2017

README.markdown

aeson-qq: JSON quasiquoter for Haskell

This package exposes the function aesonQQ that compile-time converts a string representation of a JSON value into a Data.Aeson.Value. aesonQQ has the signature

aesonQQ :: QuasiQuoter

and is used like

{-# LANGUAGE QuasiQuotes #-}
import Data.Aeson.QQ
import Data.Aeson (Value)

john :: Value
john = [aesonQQ| {age: 23, name: "John", likes: ["linux", "Haskell"]} |]

The quasiquoter can also interpolate variables like

jane :: Value
jane = [aesonQQ| {age: #{age}, name: #{name}} |]
  where
    age = 23 :: Int
    name = "Jane"

where the function toJSON. will be called on age and name at runtime.

You can also interpolate arbitrary Haskell expressions:

mary :: Value
mary = [aesonQQ| {age: #{succ age}, name: "Mary"} |]
  where
    age = 23 :: Int

If you want to replace the name of the key in a hash you'll use the $-syntax:

joe :: Value
joe = [aesonQQ| {$key: 23, name: "Joe"} |]
  where
    key = "age"
You can’t perform that action at this time.