aeson-yaml: Output any Aeson value as YAML (pure Haskell library)

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

This library exposes functions for encoding any Aeson value as YAML. There is also support for encoding multiple values into YAML "documents".

This library is pure Haskell, and does not depend on C FFI with libyaml. It is also licensed under the BSD3 license.

[Skip to Readme]


Change log
Dependencies aeson (>= && <1.5), aeson-yaml, base (>= && <4.13), bytestring (>= && <0.11), text (>=0.1 && <1.3), unordered-containers (>= && <0.3), vector (>=0.1 && <0.13) [details]
License BSD-3-Clause
Copyright 2019 Clovyr LLC
Author Patrick Nielsen
Category Text, Web, JSON, YAML
Home page
Bug tracker
Source repo head: git clone
Uploaded by patrick at 2019-09-30T02:18:58Z


[Index] [Quick Jump]


Manual Flags


Build the binaries


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

Readme for aeson-yaml-

[back to package description]


BSD3-licensed library to encode any Aeson value as YAML, without a dependency on an external YAML library like yaml (libyaml C FFI) or HsYaml (GPL).


import qualified Data.Aeson.Yaml as Aeson.Yaml

Aeson.Yaml.encode :: ToJSON a => a -> LazyByteString

-- To encode multiple values, separated by '---' (YAML documents),
-- use `encodeDocuments`.
Aeson.Yaml.encodeDocuments :: ToJSON a => [a] -> LazyByteString

-- To encode values of different types, use `toJSON` from `Data.Aeson`
-- like so:
encodeDocuments [toJSON x, toJSON y, toJSON z]

See bin/JsonToYaml.hs for a simple command-line application using this library.