Unfortunately writing a JSON library is the Scala community’s version of coding a todo list app.
There are quite a variety of alternatives. I list them in no particular order, with notes:
- parsing.json.JSON – Warning this library is available only up to Scala version 2.9.x (removed in newer versions)
- spray-json – Extracted from the Spray project
- Jerkson ± – Warning a nice library (built on top of Java Jackson) but now abandonware. If you are going to use this, probably follow the Scalding project’s example and use the backchat.io fork
- sjson – By Debasish Ghosh
- lift-json – Can be used separately from the Lift project
- json4s 💣
§ ± – An extraction from lift-json, which is attempting to create a standard JSON AST which other JSON libraries can use. Includes a Jackson-backed implementation - Argonaut 💣
§ – A FP-oriented JSON library for Scala, from the people behind Scalaz - play-json ± – Now available standalone, see this answer for details
- dijon – A handy, safe and efficient JSON library, uses jsoniter-scala under hood.
- sonofjson – JSON library aiming for a super-simple API
- Jawn – JSON library by Erik Osheim aiming for Jackson-or-faster speed
- Rapture JSON ± – a JSON front-end which can use 2, 4, 5, 6, 7, 11 or Jackson as back-ends
- circe 💣 – fork of Argonaut built on top of cats instead of scalaz
- jsoniter-scala – Scala macros for compile-time generation of ultra-fast JSON codecs
- jackson-module-scala – Add-on module for Jackson to support Scala-specific datatypes
- borer – Efficient CBOR and JSON (de)serialization in Scala
💣 = has not fixed security vulnerabilities, § = has Scalaz integration, ± = supports interop with Jackson JsonNode
In Snowplow we use json4s with the Jackson back-end; we’ve had good experiences with Argonaut too.