Getting Started

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

Depending on argonaut with sbt, stable:

"io.argonaut" %% "argonaut" % "6.0.4"     

Depending on argonaut with sbt, latest:

"io.argonaut" %% "argonaut" % "6.1-SNAPSHOT" changing()      

Depending on argonaut with sbt, latest milestone:

"io.argonaut" %% "argonaut" % "6.1-M2"  

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

Note that the 6.0.x release supports scala 2.9.2, 2.9.3, 2.10.* and 2.11.0-RC1 with scalaz 7.0.*.

Note that the 6.1.x development stream supports scala 2.10.* with scalaz 7.1.*.

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

Release Notes: [6.0-M2] [6.0-M3] [6.0-M4] [6.0-M5] [6.0-M6] [6.0-M7] [6.0-RC1] [6.0-RC2] [6.0-RC3] [6.0] [6.0.1] [6.0.2] [6.0.3] [6.0.4] [6.1-M1] [6.1-M2]

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 @markhibberd @seanparsons

Mailing list: argonaut-json on google groups.

Source Code

You can grab the source code from the github repository at https://github.com/markhibberd/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.