我在scala中使用spray json库进行json格式化。我按照here指令构建了一个带有自定义类型的jsonformatter:
class Listing(val attr1:String,
val attr2:String,
...
val attr35:String)
object MyJsonProtocol extends DefaultJsonProtocol {
implicit object ListingJsonFormat extends RootJsonFormat[Listing] {
def write(l: Listing) =
JsArray(
JsString(l.attr1),
JsString(l.attr2),
...
JsString(l.attr35))
def read(value: JsValue) = value match {
case JsArray(Vector(
JsString(attr1),
JsString(attr2),
...
JsString(attr35))) =>
new Listing(attr1, attr2, attr3, ..., attr35)
case _ => deserializationError("Listing expected")
}
}
}
import MyJsonProtocol._
val json = Listing("red","dress","polka dot", ..., "clothing").toJson
val listing = json.convertTo[Listing]
但是,我收到此错误:
error: too many arguments for unapply pattern, maximum = 22
有没有办法解析和格式化超过22个json属性?
答案 0 :(得分:0)
您可以使用kebs库-它使用Scala宏为您创建JSON格式。
这里是具有超过22个字段的案例类的示例: https://github.com/theiterators/kebs/blob/fa9994086aac7eadd63c09c67e389a77c22beef7/spray-json/src/test/scala/SprayJsonFormatTests.scala#L161
答案 1 :(得分:-1)
尝试jsoniter-scala - 它支持案例类的10K以上字段。
这是test for 100 required fields。
此库也具有出色的性能特征,以下是使用JDK 8与Jackson,Circe和Play-JSON库进行比较的基准测试结果:http://jmh.morethan.io/?source=https://plokhotnyuk.github.io/jsoniter-scala/oraclejdk8.json