【问题标题】:What's the simplest way to pretty-print a Scala case class to JSON in Play Framework 2.1.x?在 Play Framework 2.1.x 中将 Scala 案例类漂亮地打印到 JSON 的最简单方法是什么?
【发布时间】:2013-11-06 10:54:06
【问题描述】:

我有一个类似的案例类

case class Person(firstName: String, lastName: String)

我想将它漂亮地打印为 JSON。我在 Play Framework 2.1.x 中工作。我的类路径中也恰好有 Salat 库,所以我也可以使用它。我想看看所有选项是什么,包括 json4s 等。

Scala 中的 JSON 库一直在迅速发展。我相信这可以通过使用宏之类的所有案例类的几行代码来完成(即,每个案例类不需要额外的代码)。

我相信我可以使用 play 内置的基于宏的 Json 库,但我希望看到一些可行的示例。我知道几个起点:

http://eng.42go.com/working-with-json-in-play-2-1/

https://github.com/novus/salat/wiki/JSON

Scala 2.10, its impact on JSON libraries and case class validation/creation

但我也希望看到使用 json4s 等的示例。

【问题讨论】:

    标签: json scala playframework-2.0 case-class


    【解决方案1】:

    我喜欢 Play 2.x 中内置的 JSON 支持。它有效,有据可查,而且它只是少了一个需要担心的依赖项。

    Person 的 JSON 漂亮打印将分两行完成(加上一个导入):

    import play.api.libs.json._
    ...
    implicit val personFormat = Json.format[Person]
    println(Json.toJson(personToWrite))
    

    【讨论】:

      【解决方案2】:

      Scala pickling 是实现这一目标的新方法。它应该非常快并且看起来很简单。

      当前版本是 0.8.0-SNAPSHOT,未来 0.8.0 被宣传为稳定版本。

      【讨论】:

        【解决方案3】:

        你需要更多的依赖来处理 JSON:

        libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.0"    
        

        然后您可以导入新的库并使用生成的 JSON:

        import play.api.libs.json.Json
        val readableString: String = Json.prettyPrint(json)
        

        后一行只是一个例子,通常你不会直接这样使用,而是用它来保存或交换数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-20
          • 2013-01-06
          • 2015-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多