Scala json对象作为case类的参数

时间:2016-01-14 09:26:09

标签: json scala

我有一个数据源,保存为json格式字符串。我想要做的是将每个json记录读作case class,我使用json4s作为解析器。并使用extract方法获取案例类。

我的班级是这样的:

import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.jackson.JsonMethods._

case class Order(
  order_id: String,
  buyer_id: String,
  seller_id: Long,
  price: Double
)

,解析代码为:

file.map(parse(_).extract[Order])

但这是在课外完成的,我想要的是json字符串作为class Order的构造函数参数

但据我所知,case类构造函数必须使用默认构造函数。

那么无论如何都要处理这个问题?

2 个答案:

答案 0 :(得分:2)

您可以将伴侣对象用于此目的:

import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.jackson.JsonMethods._

case class Order(
  order_id: String,
  buyer_id: String,
  seller_id: Long,
  price: Double
)

object Order {
  def apply(file: File): Order = {
    file.map(parse(_).extract[Order])
  }
}

然后像这样使用它:

val file = openFile(...)
val order = Order(file)

答案 1 :(得分:0)

您可能也想要web: bundle exec passenger start -p $PORT --max-pool-size 3 --nginx-config-template nginx.conf.erb

implicit