Haskell library for communicating with HTTP service using JSON
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


curl-aeson library for Haskell

This is a library for communicating with JSON over HTTP connection. It supports rich set of HTTP connectivity features provided by curl library combined to the performance and elegance of aeson.

Author: Joel Lehtonen joel.lehtonen+curlaeson@iki.fi

This library is at its best when communicating with simple, non-standardized JSON interfaces. If you are implementing JSON-RPC compliant client or server, take a look at another library.


In this example we fetch latest bid and ask values from a Bitcoin exchange using their public API:

{-# LANGUAGE OverloadedStrings #-}
import Control.Monad
import Data.Aeson
import Network.Curl.Aeson

ticker :: IO (Double,Double)
ticker = curlAesonGetWith p "https://bitcoin-central.net/api/v1/ticker/eur"
    p (Object o) = do
      bid <- o .: "bid"
      ask <- o .: "ask"
      return (bid,ask)
    p _ = mzero

You may find more examples from package documentation.


On Ubuntu and Debian

Starting from Ubuntu 12.04 and Debian wheezy, all dependencies are found from repositories:

sudo apt-get install libghc-aeson-dev libghc-curl-dev cabal-install

Then just install this:

cabal install


Install and configure Haskell Platform. Then, fetch all the requirements and install this library by running:

cabal update
cabal install


Following the convention of Haskell community, this library is licensed under the terms of BSD 3-clause license. Personally I prefer GPLv3, but this library is simple enough to be released with non-copyleft license.

The license text is included in LICENSE file.


I'm not an expert in doing software packages, so feel free to correct me by sending pull requests. Also, I would like to hear if you have found my library to be useful.