斯卡拉的类似Gson的库

时间:2016-04-25 12:04:50

标签: java json scala playframework-2.5

我正在学习scala。我正在尝试找到一种简单的方法将JSON String转换为Scala案例类实例。 Java有很棒的库,名为Google Gson。它可以将java bean转换为json并返回而无需一些特殊的编码,基本上你可以在一行代码中完成它。

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)

我正在阅读https://www.playframework.com/documentation/2.5.x/ScalaJson并且无法理解:scala为何如此复杂?为什么要编写读者/编写器来序列化/反序列化简单的案例类实例?是否有简单的方法来转换案例类实例 - > json - >使用play json api的case类实例?

2 个答案:

答案 0 :(得分:3)

假设你有

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

您可以通过

轻松地在Play中为此写formatter
implicit val fooFormat = Json.format[Foo]

这将允许您序列化和反序列化为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!

答案 1 :(得分:1)

查看uPickle

这是一个小例子:

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

val ex = Example("Hello", 3)

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