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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…