Skip to content

onilton/jsontocaseclass

 
 

Repository files navigation

Scala.js port of json 2 case class

This fork is my try to port the original code to Scala.js.

Why

Because...

this is SCALA!

Future work

  • Get rid of underscore.js
  • More types!
  • Use something modern like React.js
  • Use something like scalacss?

Running

sbt ~fastOptJS

Open new terminal and run

npm install

npm start

open http://localhost:8090/ in browser

json 2 case class

Kickstart your scala API client by turning JSON into case classes.

Try it at http://json2caseclass.cleverapps.io

##Use cases

When interacting with 3rd party json-based APIs from scala, modelling the API's responses with case classes can come in handy. If the JSON exhibits some properties (homogenous lists, for instance), it's easy to create a case class with the same structure. With some deserialization magic it's easier to deal with the API's responses.

case class Foo(a: Bar, b: Bar, c: Double)
case class Bar(a: Option[String], b: String)

{
   "a": {
     "a": "fubar",
     "b": "fubar"
   },
   "b": {
     "b": "baz"
   },
   "c": 42.0
}

However it's tedious to manually copy the json structure into case classes.

json 2 case class automatically generates case classes from JSON (if possible).

##Features

json 2 case class can generate

  • nested case classes from JSON objects
  • lists from JSON arrays
  • scala base types from JSON primitives
  • Option[T] for optional values

##ToDo

Due to the arity limitation of 22 values, some JSON objects can't be encoded with case classes. A Map[String,T] fallback is on the works.

The code is on the project but not activated : need a UI support to choose between map and object

About

Scala.js port of json2caseclass

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 80.2%
  • HTML 10.4%
  • JavaScript 8.6%
  • CSS 0.8%