{"id":13652933,"url":"https://github.com/scala-jsonapi/scala-jsonapi","last_synced_at":"2025-04-23T03:31:43.676Z","repository":{"id":98079764,"uuid":"45837479","full_name":"scala-jsonapi/scala-jsonapi","owner":"scala-jsonapi","description":"Scala support library for integrating the JSON API spec with Spray, Play! or Circe","archived":false,"fork":false,"pushed_at":"2018-12-28T12:29:57.000Z","size":183,"stargazers_count":107,"open_issues_count":14,"forks_count":29,"subscribers_count":29,"default_branch":"master","last_synced_at":"2024-04-22T13:32:38.981Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scala-jsonapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-11-09T12:47:14.000Z","updated_at":"2024-03-17T22:56:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"fdda36b5-8169-47de-804f-cff2107d1552","html_url":"https://github.com/scala-jsonapi/scala-jsonapi","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala-jsonapi%2Fscala-jsonapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala-jsonapi%2Fscala-jsonapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala-jsonapi%2Fscala-jsonapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scala-jsonapi%2Fscala-jsonapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scala-jsonapi","download_url":"https://codeload.github.com/scala-jsonapi/scala-jsonapi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250365669,"owners_count":21418725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:01:04.128Z","updated_at":"2025-04-23T03:31:43.168Z","avatar_url":"https://github.com/scala-jsonapi.png","language":"Scala","readme":"# Description\n\n[![Build Status](https://travis-ci.org/zalando/scala-jsonapi.svg)](https://travis-ci.org/zalando/scala-jsonapi)\n[![Coverage Status](https://coveralls.io/repos/zalando/scala-jsonapi/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/zalando/scala-jsonapi?branch=master)\n[![codecov.io](https://codecov.io/github/zalando/scala-jsonapi/coverage.svg?branch=master)](https://codecov.io/github/zalando/scala-jsonapi?branch=master)\n[![Join the chat at https://gitter.im/zalando/scala-jsonapi](https://badges.gitter.im/zalando/scala-jsonapi.svg)](https://gitter.im/zalando/scala-jsonapi?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.zalando/scala-jsonapi_2.11/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.zalando/scala-jsonapi_2.11)\n[![Javadocs](https://www.javadoc.io/badge/org.zalando/scala-jsonapi_2.11.svg)](https://www.javadoc.io/doc/org.zalando/scala-jsonapi_2.11)\n\nscala-jsonapi is a Scala library that aims to help you produce JSON output based on the [JSON API specification][jsonapi] easily and painlessly. The library is compatible with Scala version `2.11`. It supports read and write for the following backends:\n\n * [Play-JSON]\n * [Spray-JSON]\n * [Circe]\n\nIn addition, scala-jsonapi provides out-of-the-box (un)marshallers for:\n\n * Spray and Play\n * Akka Http\n\n## Current Status\nThis library is very much a work in progress, so expect its API to change.\n\n# Setup\n\nTo use scala-jsonapi, first add a library dependency—assuming that you have [sonatype resolvers] set up.\n\n    libraryDependencies += \"org.zalando\" %% \"scala-jsonapi\" % \"0.6.2\"\n\nYou also have to provide the used backend (e.g. spray-json).\n\n# Usage\n\nThe rich JSON API model is available via the following import:\n\n    import org.zalando.jsonapi.model._\n\nThe library provides serialization and deserialization of JSON API root objects to JSON using either Spray-JSON or Play-JSON. Please note that you need to explicitly add a dependency to either spray-json or play-json to your project.\n\n## Spray-JSON\n\n    import org.zalando.jsonapi.json.sprayjson.SprayJsonJsonapiProtocol._\n    import spray.json._\n\n    // Serialization\n    val rootObject: RootObject = ???\n    rootObject.toJson\n\n    // Deserialization\n    val json: JsValue = ???\n    json.convertTo[RootObject]\n\n## Play-JSON\n\nAlong with adding the scala-jsonapi library dependency, also include spray-httpx for marshalling support\n\n    libraryDependencies += \"io.spray\" %% \"spray-httpx\" % \"1.3.3\"\n\nThe JSON API support can then be imported using `PlayJsonJsonapiSupport` as follows\n\n    import org.zalando.jsonapi.json.playjson.PlayJsonJsonapiSupport._\n    import play.api.libs.json._\n\n    // Serialization\n    val rootObject: RootObject = ???\n    Json.toJson(rootObject)\n\n    // Deserialization\n    val json: JsValue = ???\n    Json.fromJson[RootObject](json)\n\n## Creating a JSON API Root Object\n\nscala-jsonapi provides type class `JsonapiRootObjectWriter` so that you can create a JSON API representation for your resources. The following code snippet demonstrates its usage:\n\n    import org.zalando.jsonapi\n    import jsonapi.Jsonapi\n\n    case class Person(name: String)\n\n    implicit val personJsonapiWriter = new JsonapiRootObjectWriter[Person] {\n      override def toJsonapi(person: Person) = {\n        ???\n      }\n    }\n\n    val personRootObject: RootObject = Jsonapi.asJsonapi(Person(\"Boris M.\"))\n\nIn contrast there is a type class called `JsonapiRootObjectReader` that supports conversion from JSON API representation to your resources. To illustrate:\n\n    import org.zalando.jsonapi\n    import jsonapi.Jsonapi\n\n    case class Person(name: String)\n\n    implicit val personJsonapiReader = new JsonapiRootObjectReader[Person] {\n      override def fromJsonapi(rootObject: RootObject) = {\n        ???\n      }\n    }\n\n    val person: Person = Jsonapi.fromJsonapi[Person](RootObject(...))\n\nFor complete usage, see [the specs example].\n\n## JSON API Links Support\n\nThere is support for string and object links.\n\nTo create a string \"self\" link:\n\n    Links.self(\"href\", None)\n\nTo create an object \"self\" link:\n\n    Links.self(\"href\", Some(meta))\n\n# Publishing and Releasing\n\nPublishing and releasing is made with help of the [sbt-sonatype plugin].\n\n# License\n\nscala-jsonapi is licensed under the [MIT license](LICENSE) unless otherwise stated in the license files in higher directories (if any).\n\n[sbt-sonatype plugin]: https://github.com/xerial/sbt-sonatype\n[the specs example]: src/test/scala/org/zalando/jsonapi/json/ExampleSpec.scala\n[sonatype resolvers]: http://www.scala-sbt.org/0.13/docs/Resolvers.html#Maven\n[jsonapi]: http://jsonapi.org/\n[Play-JSON]: https://www.playframework.com/documentation/2.5.x/ScalaJson\n[Spray-JSON]: https://github.com/spray/spray-json\n[Circe]: https://github.com/travisbrown/circe\n","funding_links":[],"categories":["Libraries","Table of Contents","JSON"],"sub_categories":["JSON"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscala-jsonapi%2Fscala-jsonapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscala-jsonapi%2Fscala-jsonapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscala-jsonapi%2Fscala-jsonapi/lists"}