【问题标题】:Json serialization in Scala 2.10Scala 2.10 中的 Json 序列化
【发布时间】:2013-04-04 04:06:58
【问题描述】:

在 Play 2.1 和 Scala 2.10 之前,我使用的是 Jerkson。

不幸的是,还没有正式发布的与 Scala 2.10 兼容的 Jerkson 版本。

自从使用 Jackson 和 Scala 模块以来,我没有使用 Enumerations 的预期行为。

我正在尝试使用 Play 2.1 Reads、Writes 和 Format,使用宏 inception,但这似乎真的很痛苦,我需要在我的模型中添加样板文件,以便 inception 工作:

object User extends ((String, String, Option[String], Option[String], Long, Long, Boolean, Boolean, ObjectId) => User) {
 ...
}

那我可以用implicit val userFormat: Format[User] = Json.format[User]

我仍然不能动态序列化Object,而只能动态序列化User

我没有看过 Lift,但它似乎添加了与 Play2.1 Json 库一样多的样板代码。


我认为序列化在任何语言中都应该很容易。我不想编写自定义序列化程序或自定义解析器。

我希望库可以使用这样的代码:

case class User(name: String, status: Status.Value)
val myUser = User("toto",Status.VALID)
val myMap: Map[String,Object] = ("key1" -> myUser, "key2" -> "value2")
Json.serialize(myMap)

这就是 Java 中 Gson、Jackson 和其他类似工具所提供的。


所以对于 Scala 2.10,我不知道该使用哪个工具。 而且我不明白为什么我们需要为这种简单的情况构建自定义序列化程序。 也许 Play2.1 Json 更快,因为它是基于宏的,但是如果没有提供格式,它是否有可能使用反射或其他东西?

您知道任何适合我用例的冷却工具吗?

【问题讨论】:

标签: scala playframework-2.0 jackson scala-2.10 jerkson


【解决方案1】:

Jerkson 有许多分支移植到 2.10,但我不知道有多少分支发布到 Maven 存储库。

Here's mine,主要来源于Rand Hindi's加上我自己的一些补丁。

【讨论】:

  • 谢谢。 Rand Hindi 是一个朋友,我知道他的存储库。但我们是一家初创公司,我想避免非官方发布,因为它是非官方的,它增加了开发过程的负担,特别是对于不了解 maven 并且需要克隆堡垒并在本地构建它的 JS 开发人员。我们还没有 Nexus 或类似的东西。
  • 顺便说一句,我昨天在 Jerkson 上看到了一个针对 Scala 2.10 的新拉取请求,所以它可能很快就会被集成? “codahale 于 10 个月前创作” -> 我认为这可能需要一些时间 :(
【解决方案2】:

我用 Jackson Scala Module 替换了我的 Jerkson 代码,它运行良好

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2016-10-30
    • 2014-07-02
    • 2012-12-28
    相关资源
    最近更新 更多