Getting Started

The current published version of argonaut is 6.2.2 and is available on https://oss.sonatype.org.

Depending on argonaut with sbt, stable:

"io.argonaut" %% "argonaut" % "6.2.2"     
"io.argonaut" %% "argonaut-scalaz" % "6.2.2"  
"io.argonaut" %% "argonaut-monocle" % "6.2.2"  
"io.argonaut" %% "argonaut-cats" % "6.2.2"  

Then checkout the quickstart, the detailed documention and examples, and the scaladocs.

The 6.2.x release supports scala 2.10.*, 2.11.* and 2.12.* with scalaz 7.2.*.

All minor releases (from 6.0 onwards) are binary compatible, i.e. 6.1.x stream are drop in replacements, and the same will be true for 6.2.x, but going from 6.1 to 6.2 _may_ require changes or recompilation.

Release Notes: [6.0] [6.0.1] [6.0.2] [6.0.3] [6.0.4] [6.1-M1] [6.1-M2] [6.1-M3] [6.1-M4] [6.1-M5] [6.1-M6] [6.1] [6.2-M1] [6.2]

Features
Concise Codec Definitions #

import argonaut._, Argonaut._

case class Person(name: String, age: Int, things: List[String])

implicit def PersonCodecJson =
  casecodec3(Person.apply, Person.unapply)("name", "age", "things")

Rich library for Parsing, Printing, Conversion and Manipulation #

val person =
    Person("Bam Bam", 2, List("club"))

val json: Json =
    person.asJson

val prettyprinted: String =
    json.spaces2

val parsed: Option[Person] =
    prettyprinted.decodeOption[Person]

History Preserving Zipper #

val cursor =
    json.hcursor --\ "field" --\ "nested" --\ "deep" := "new value"

val history =
    cursor.history

val updated =
    -cursor

Getting Help

We have an irc channel on freenode - #argonaut

Contact one of the developers on twitter:
@dibblego @seanparsons

Mailing list: argonaut-json on google groups.

Source Code

You can grab the source code from the github repository at https://github.com/argonaut-io/argonaut

The project is built with sbt. Just run the sbt script in the root of the project:

$ ./sbt compile
Contributing

All contributions are very welcome. Just fork and create a pull request on github.

To make it easier for us to pull in your changes, try to:

  • Make a new pull request for each logical change.
  • Make each pull request a single coherent commit. Use git rebase -i to squash commits as necessary.
  • Add tests if you are adding functionality or fixing a bug.
  • Run the tests on all versions of scala using ./sbt "+test".
Developers
Sean Parsons

@seanparsons

Thanks
YourKit

YourKit is kindly supporting argonaut and other open source projects with its full-featured Java Profiler.

Ephox

Argonaut was orginally conceived, developed and open sourced by Ephox.