是否可以使用json4s将JSON数组解析为元组?

时间:2015-08-09 22:08:11

标签: scala json4s

采用以下示例:

import org.json4s.native.JsonMethods._
import org.json4s._

implicit val formats = DefaultFormats

case class A(name: String)
case class B(age: Int)
val json = parse("""[ {"name": "mark"}, { "age": 27 }, 5 ]""")
json.extract[Tuple3[A, B, Int]]

出错:

  

org.json4s.package $ MappingException:_1没有可用值无效   name的值未找到可转换为的值   java.lang.String中

1 个答案:

答案 0 :(得分:1)

Json4s scalaz似乎有元组支持。我不确定在json4s中是否有任何内置方法可以做到这一点。我一般都解决了这个问题

implicit val formats = DefaultFormats

class MySerializer extends CustomSerializer[Tuple3[A,B,Int]](format => (
    {
        case JArray(x :: y :: z :: Nil ) => {
                ( x.extract[A], y.extract[B], z.extract[Int])}
    },
    {
        case x:Tuple3[A,B,Int] => null
    }
))

然后从您的代码中执行类似的操作

implicit val formats = DefaultFormats + new MySerializer
val json = parse("""[ {"name": "mark"}, { "age": 27 }, 5 ]""")
json.extract[Tuple3[A,B,Int]]