json5hs: Serialising to and from JSON5

[ bsd3, data, 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]
Versions [faq] 0.1.0.0, 0.1.2.0, 0.1.2.1, 0.1.2.2
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 sakamitz@yahoo.co.jp
Category Web, Text, JSON5
Source repo head: git clone https://github.com/sakamitz/json5hs.git
Uploaded by sakamitz at Fri Jul 26 08:00:48 UTC 2019
Distributions NixOS:0.1.2.2
Downloads 168 total (48 in the last 30 days)
Rating 1.75 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-07-26 [all 1 reports]

Modules

[Index] [Quick Jump]

Flags

NameDescriptionDefaultType
split-base

Use the new split base package.

EnabledAutomatic
pretty

Add support for using pretty printing combinators.

EnabledAutomatic
generic

Add support for generic encoder.

EnabledAutomatic
mapdict

Encode Haskell maps as JSON dicts

DisabledAutomatic

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

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for json5hs-0.1.2.2

[back to package description]

json5hs: Serialising to and from JSON5

Hackage Build Status


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

Example

ghci> import Text.JSON5
ghci> encode [("key1",1),("key2",2)]
"[[\"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"