如何使用标准Scala类在Scala中解析JSON?

如何使用标准Scala类在Scala中解析JSON?,第1张

如何使用标准Scala类在Scala中解析JSON?

这是一个基于提取器的解决方案,它将进行类转换:

class CC[T] { def unapply(a:Any):Option[T] = Some(a.asInstanceOf[T]) }object M extends CC[Map[String, Any]]object L extends CC[List[Any]]object S extends CC[String]object D extends CC[Double]object B extends CC[Boolean]val jsonString =    """      {        "languages": [{ "name": "English", "is_active": true, "completeness": 2.5        }, { "name": "Latin", "is_active": false, "completeness": 0.9        }]      }    """.stripMarginval result = for {    Some(M(map)) <- List(JSON.parseFull(jsonString))    L(languages) = map("languages")    M(language) <- languages    S(name) = language("name")    B(active) = language("is_active")    D(completeness) = language("completeness")} yield {    (name, active, completeness)}assert( result == List(("English",true,2.5), ("Latin",false,0.9)))

在for循环的开始,我人为地将结果包装在一个列表中,以便在最后生成一个列表。然后在for循环的其余部分中,我将使用生成器(使用

<-
)和值定义(使用
=
)将利用unapply方法的事实。

(较旧的答案已被删除-如果您有好奇心,请查看编辑历史记录)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5051262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存