json5hs: Serialising to and from JSON5

[ bsd3, json5, library, text, web ] [ Propose Tags ]

The JSON5 Data Interchange Format (JSON5) is a superset of JSON that aims to alleviate some of the limitations of JSON by expanding its syntax to include some productions from ECMAScript 5.1.

This library provides a parser and pretty printer for converting between Haskell values and JSON5.

[Skip to Readme]


Automatic Flags

Use the new split base package.


Add support for using pretty printing combinators.


Add support for generic encoder.


Encode Haskell maps as JSON dicts


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,,, (info)
Dependencies array, base, bytestring, containers, mtl, pretty, syb (>=0.3.3), text [details]
License BSD-3-Clause
Copyright 2019 Yang X. Nan
Author Yang X. Nan
Maintainer yxnan@pm.me
Category Web, Text, JSON5
Source repo head: git clone https://github.com/typowritter/json5hs.git
Uploaded by sakamitz at 2020-09-01T15:00:30Z
Distributions NixOS:
Downloads 1909 total (15 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for json5hs-

[back to package description]

json5hs: Serialising to and from JSON5

Hackage Build

This library provides a parser and pretty printer for converting between Haskell values and JSON5.


ghci> import Text.JSON5
ghci> encode [("key1",1),("key2",2)]

ghci> import Text.JSON5.String (runGetJSON)
ghci> input <- getLine 
{'singleQuotes': 0xabcde, pos: +3, infnan: +Infinity, escape: "\t\u1234", trailing-comma: ['here',], }
ghci> runGetJSON readJSValue input
Right (JSObject (JSONObject {fromJSObject = [("singleQuotes",JSNumber (JSRational (703710 % 1))),("pos",JSNumber (JSRational (3 % 1))),("infnan",JSNumber (JSInfNaN Infinity)),("escape",JSString (JSONString {fromJSString = "\t\4660"})),("trailing-comma",JSArray [JSString (JSONString {fromJSString = "here"})])]}))

ghci> import Text.JSON5.Pretty
ghci> ppJSValue $ makeObj [("key1", JSString $ toJSString "value1"), ("key2", JSArray [JSNull, JSBool True])]
{"key1": "value1", "key2": [null, true]}

ghci> import Text.JSON5.Generic
ghci> ppJSValue $ toJSON $ Just [2,1,4]
{"Just": [2, 1, 4]}
ghci> fromJSON (JSString $ toJSString "string") :: Result String 
Ok "string"