{"id":19681357,"url":"https://github.com/romansky/jello","last_synced_at":"2026-01-11T17:41:08.584Z","repository":{"id":57729321,"uuid":"48765038","full_name":"romansky/jello","owner":"romansky","description":"Scala/Scala.js JSON library, no thrills included","archived":false,"fork":false,"pushed_at":"2024-01-02T12:21:07.000Z","size":96,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-14T18:49:57.405Z","etag":null,"topics":["formatter","json","json-library","marshalling","scala"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/romansky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-29T20:04:45.000Z","updated_at":"2024-04-14T18:49:57.407Z","dependencies_parsed_at":"2022-09-10T21:51:29.425Z","dependency_job_id":null,"html_url":"https://github.com/romansky/jello","commit_stats":null,"previous_names":["uniformlyrandom/jello"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romansky%2Fjello","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romansky%2Fjello/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romansky%2Fjello/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romansky%2Fjello/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/romansky","download_url":"https://codeload.github.com/romansky/jello/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224151601,"owners_count":17264436,"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":["formatter","json","json-library","marshalling","scala"],"created_at":"2024-11-11T18:07:38.204Z","updated_at":"2026-01-11T17:41:08.540Z","avatar_url":"https://github.com/romansky.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jello \n\n[![Build Status](https://travis-ci.org/romansky/jello.png)](https://travis-ci.org/romansky/jello) \n[![Scala.js](https://www.scala-js.org/assets/badges/scalajs-1.8.0.svg)](https://www.scala-js.org)\n[![Maven Central](https://img.shields.io/maven-central/v/org.apache.maven/apache-maven.svg)](http://search.maven.org/#artifactdetails|com.uniformlyrandom|jello_2.13|1.0.0|jar)\n\nhttp://search.maven.org/#artifactdetails|com.uniformlyrandom|jello_2.13|1.0.0|jar\n\nScala.js \u0026 JVM JSON marshalling library with straightforward format.\n\n## Why did I create yet another JSON library?\n\nScala.js prohibits dynamically invoked code, so one has to use macros where one would otherwise use mechanisms such as reflection etc.\n\nAt the same time, the Scala.js community created some idiomatic marshaling/pickling libraries which were a divergence from the common. (Play Framework etc..) \nAs it turned out, if one wants to use one of these generic libraries on the back-end he could not use any of the existing Scala-js compatible JSON libraries.\n\nThus Jello was born.\n\n# Usage\n\n## Installation\n\n```\nlibraryDependencies ++= Seq(\"com.uniformlyrandom\" %%% \"jello\" % \"1.0.0)\n```\n\n## Overview\n\n`Jello` takes inspiration from `Play Json`, the formatters need to be provided implicitly, it's recommended to have the companion object contain these formatters\n \n```scala\ncase class A (\n    m1: String,\n    m2: Int\n)\n\nobject A {\n    implicit fmt: JelloFormat[A] = JelloFormat.format[A]\n}\n\nobject App {\n\n    import com.uniformlyrandom.jello.TypesLibrary._\n\n    def main(args: Array[String]): Unit = {\n        val a: A = A(\"value\",1)\n        val aJV: JelloValue = JelloJson.toJson(a)\n        val aJson: String = JelloJson.toJsonString(aJV)\n        //aJson == {\"m1\":\"value\",\"m2\":1}\n        val ajJV: JelloValue = JelloJson.parse(aJson)\n        val aTry: Try[A] = JelloJson.fromJson(ajJV)\n        \n        assert(Try(a) == aTry)\n    }\n}\n```\n\n### Supported features\n\n * `Enumeration`s support\n * helper constructs to serialize `trait`s\n  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromansky%2Fjello","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromansky%2Fjello","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromansky%2Fjello/lists"}