MIT licensed by Felix Paulusma
Maintained by [email protected]
This version can be pinned in stack with:safe-json-1.1.0@sha256:dbd888eb4397439ea87323f56ba79f88ce94d0efb89a4ebe9271a36e5c7ef3f1,3888

Module documentation for 1.1.0

This library aims to make the updating of JSON formats or contents, while keeping backward compatibility, as painless as possible. The way this is achieved is through versioning and defined migration functions to migrate older (or newer) versions to the one used.

The library mainly consists of two classes:

  • SafeJSON a: Defines the version of a and if (and how) it is migratable.

  • Migrate a: Defines the data type (MigrateFrom a) that can be migrated to a and how to migrate from that type.

Using these two classes, JSON serialized data types will stay parsable, even after format changes.

For a more in-depth explanation and examples, please see the README at


Changelog for safe-json


  • update for GHC 8.8.1 [#15]
    • loosened dependency restriction on time
    • fixed instance for IntMap
  • DRY-er TestMigrate and TestReverseMigrate type synonyms [#17] Thanks to @blinkytoy
  • fixed documentation [#17] Thanks to @blinkytoy
    • broken links to modules
    • setVersion’s documentation only showing half


  • Removed FromJSON/ToJSON dependecy on SafeJSON
    • Default implementation of safeFrom and safeTo unchanged, still require FromJSON and ToJSON
  • Added unsafe setVersion and removeVersion functions.
  • Integrated Data.SafeJSON.Instances into Data.SafeJSON.Internal
  • Some documentation cleanup/fixes
  • Added convenience functions for defining safeFrom and safeTo
    • e.g. containWithObject, (.:$), (.=$), etc.


  • First release. Includes:
    • Data.Aeson.Safe
    • Data.SafeJSON
    • Data.SafeJSON.Instances
    • Data.SafeJSON.Internal
    • Data.SafeJSON.Test