Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
JSON parser in Haskell
Haskell
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
JSON.hs
README.mkdn

README.mkdn

JSON in Haskell

This library pre-dates the standard Haskell JSON library, but they are very similar. The main difference is that this one does not even use any parser combinators.

To use, the function to call is toJSON:

toJSON :: Monad m => String -> m JSONValue

Very generic, no? But it has worked in production, so I see it with respect.

It provides a helper operator, @@ which has this signature:

(@@) :: Monad m => String -> JSONValue -> m JSONValue

It is like XPath for JSON; in an object like this:

{'country':{'name':'Uganda', 'anthem':'Oh, Uganda'}}

You can access it thus:

case parseJSON jsonString of
  Just jsonObject -> case "/country/name" @@ jsonObject of
    Just (JStr name) -> name  --  That will return "Uganda".
    _                -> ""
  _               -> ""

The monad returned contains a value (the parsed JSON) of this data type:

data JSONValue = JNum Int | JStr String | JBool Bool | JNull |
                 JArr [JSONValue] | JObj (Data.Map.Map String JSONValue)

Not as bad as you feared, is it?

Should you even use it?

These days, there is a standard Haskell JSON library. I put this here because a lot of legacy code from the company (Scyfy Technologies) depends on it. So here it is.

Something went wrong with that request. Please try again.