项目作者: reugn

项目描述 :
Lightweight Scala JSON library
高级语言: Scala
项目地址: git://github.com/reugn/scalikejackson.git
创建时间: 2018-12-16T22:12:14Z
项目社区:https://github.com/reugn/scalikejackson

开源协议:Apache License 2.0

下载


ScalikeJackson

Download
Build Status

ScalikeJackson is a lightweight scala JSON library which provides play-json like interface and backed by Jackson.
A collection of benchmarks results can be viewed here.

Partial play-json features support

Basic operations

  • Basic reading and writing
  • Traversing a JSON object

Reading and writing objects

  • Automatic conversion (implicit reader/writer)
  • Reader/Writer DSL
  • Manual JSON construction

Getting started

Add bintray resolver:

  1. resolvers += Resolver.bintrayRepo("reug", "maven")

Add ScalikeJackson as a dependency in your project:

  1. libraryDependencies += "reug" %% "scalikejackson" % "<version>"

Usage

Basic operations:

  1. import reug.scalikejackson.play.Json
  2. import reug.scalikejackson.ScalaJacksonImpl._
  3. import reug.scalikejackson.utils.Converters._
  4. val obj = Json.obj("i" -> 1,
  5. "b" -> false,
  6. "o" -> Json.obj("s" -> "str"),
  7. "arr" -> Json.arr(1, 2, 3))
  8. (obj \ "o" \ "s").asOpt[String]
  9. (obj \\ "s").head.as[String]
  10. (obj \ "arr").asSeq[Int]
  11. Json.stringify("""{"i":1}""".toJson)

Reading and writing objects:

  1. import reug.scalikejackson.play.Json
  2. import reug.scalikejackson.ScalaJacksonImpl._
  3. case class MockStruct(
  4. i: Int,
  5. s: String,
  6. b: Option[Boolean]
  7. )
  8. case class Container(
  9. i_str: String,
  10. i_mock: MockStruct
  11. )
  12. val mock_instance = MockStruct(1, "a", Some(true))
  13. val container_instance = Container("asdf", mock_instance)
  14. val mock_writes = Json.writes[MockStruct](
  15. p => (
  16. ("in", classOf[Int], p.i),
  17. ("sn", classOf[String], p.s),
  18. ("bn", Option(classOf[Boolean]), p.b)
  19. )
  20. )
  21. val mock_reads = Json.reads[MockStruct](
  22. ("in", classOf[Int]),
  23. ("sn", classOf[String]),
  24. ("bn", Option(classOf[Boolean]))
  25. )
  26. implicit val mock_format = Json.format[MockStruct]() or(mock_writes, mock_reads)
  27. implicit val container_format = Json.format[Container]() or(mock_writes, mock_reads)
  28. mock_instance.write shouldBe """{"in":1,"sn":"a","bn":true}"""
  29. container_instance.write shouldBe """{"i_str":"asdf","i_mock":{"in":1,"sn":"a","bn":true}}"""

Support custom mapper configuration:

  1. implicit val format = Json.format[MockStruct](PropertyNamingStrategy.SNAKE_CASE)

Contributing

Feedback, bug reports, and pull requests are greatly appreciated.

License

Licensed under the Apache 2.0 License.