Changelog for aeson-

For the latest version of this document, please see

Closed tickets:

Long overdue release (once again), so there's quite a bit of stuff included even though it's a "minor" release. Big thanks to all the contributors, the project would not exist without you!

Special thanks to Oleg Grenrus and Xia Li-Yao for reviewing tons of stuff.

New stuff:

instance FromJSON Foo where
  parseJSON = gParseJSON defaultOptions { rejectUnknownFields = True }


New features:

data Foo = Bar
  deriving Generic

opts :: JSONKeyOptions
opts = defaultJSONKeyOptions { keyModifier = toLower }

instance ToJSONKey Foo where
  toJSONKey = genericToJSONKey opts

instance FromJSONKey Foo where
  fromJSONKey = genericFromJSONKey opts


Internal changes:

This release introduces bounds on the size of Scientific numbers when they are converted to other arbitrary precision types that do not represent them efficiently in memory.

This means that trying to decode a number such as 1e1000000000 into an Integer will now fail instead of using a lot of memory. If you need to represent large numbers you can add a newtype (preferably over Scientific) and providing a parser using withScientific.

The following instances are affected by this:

For the same reasons the following instances & functions have been removed:

Finally, encoding integral values with large exponents now uses scientific notation, this saves space for large numbers.

Breaking changes:

Other improvements:

JSONTestSuite cleanups, all motivated by tighter RFC 7159 compliance:

Over 90% of JSONTestSuite tests currently pass. The remainder can be categorised as follows:

Thanks to Sean Leather for fixing this, and to Ryan Scott for helping out.

Major enhancements:

Other enhancements:

    fast: true

Other changes:

The only changes are added instances.

These are new:

These are now available for older GHCs:

This release should be close to backwards compatible with aeson 0.9.

If you are upgrading from aeson 0.10 it might be easier to go back in history to the point you were still using 0.9.

Breaking changes:


Bug fixes:


Performance improvements


With the exception of long-deprecated code, the API changes below should be upwards compatible from older versions of aeson. If you run into upgrade problems, please file an issue with details.

0.6 series

0.5 to 0.6

0.4 to 0.5

0.3 to 0.4