MIT licensed by Edward A. Kmett, Oleg Grenrus
Maintained by Oleg Grenrus
This version can be pinned in stack with:aeson-optics-1.2.1@sha256:8f3caca8ff809c14ebbec791bd6cc1ca2767232c3ddcb57923d7ce0dec73f5bc,1515

Module documentation for 1.2.1


The goal of optics-aeson is to provide traversals and prisms for the Aeson library’s Value type, while obeying the Traversal/Prism laws.



  • Drop dependency on attoparsec. Use aesons decode to parse Value.

  • Drop direct dependency on unordered-containers


Release corresponding to lens-aeson-1.2 API changes.

  • Require aeson-2.0.3.* and optics-core-0.4.1 or greater.

  • Drop support for GHC-8.0

  • Change the types of _Object, key, and members:

    -_Object :: Prism' t (HashMap Text Value)
    +_Object :: Prism' t (KeyMap Value)
    -key :: AsValue t => Text -> AffineTraversal' t Value
    +key :: AsValue t => Key  -> AffineTraversal' t Value
    -members :: AsValue t => IndexedTraversal' Text t Value
    +members :: AsValue t => IndexedTraversal' Key  t Value

    This mirrors similar changes made in aeson-2.0.*, where the type of Object’s field was changed from HashMap Text Value to KeyMap Value.

    The Ixed Value instance changes similarly:

    -type instance Index Value = Text
    +type instance Index Value = Key
  • Remove Primitive and AsPrimitive, since de-emphasized the notion of primitive versus composite JSON values.

    • The AsPrimitive methods (_Value, _String, and _Bool) are now AsValue methods.
    • _Number’s default signature, Bool_, String_, and Null_ now have an AsValue constraint.
  • Add an IsKey class, whose method _Key is an Iso for converting values to and from a Key.


  • Support aeson- add instances for KeyMap.