Capacytron
Capacytron

Reputation: 3739

Gson-like library for scala

I'm learning scala. I'm trying to find an easy way for turing JSON String to Scala case class instance. Java has wonderful library called Google Gson. It can turn java bean to json and back without some special coding, basically you can do it in a single line of code.

public class Example{
  private String firstField
  private Integer secondIntField

  //constructor

  //getters/setters here
}
//Bean instance to Json string
String exampleAsJson = new Gson().toJson(new Example("hehe", 42))

//String to Bean instance
Example exampleFromJson = new Gson().fromJson(exampleAsJson, Example.class)

I'm reading about https://www.playframework.com/documentation/2.5.x/ScalaJson and can't get the idea: why it's so complex is scala? Why should I write readers/writers to serialize/deserialize plain simple case class instances? Is there easy way to convert case class instance -> json -> case class instance using play json api?

Upvotes: 3

Views: 936

Answers (2)

nattyddubbs
nattyddubbs

Reputation: 2095

Let's say you have

case class Foo(a: String, b: String)

You can easily write a formatter for this in Play by doing

implicit val fooFormat = Json.format[Foo]

This will allow you to both serialize and deserialize to JSON.

val foo = Foo("1","2")
val js = Json.toJson(foo)(fooFormat)  // Only include the specific format if it's not in scope.
val fooBack = js.as[Foo]              // Now you have foo back!

Upvotes: 3

Luka Jacobowitz
Luka Jacobowitz

Reputation: 23532

Check out uPickle

Here's a small example:

case class Example(firstField: String, secondIntField: Int)

val ex = Example("Hello", 3)

write(ex) // { "firstField": "Hello", "secondIntField" : 3 }

Upvotes: 1

Related Questions