使用模式匹配与net.liftweb.util.JSONParser.parse的结果

时间:2011-09-03 17:12:19

标签: json scala lift

我尝试使用net.liftweb.util.JSONParser解析JSON字符串。它的parse()方法返回一个Box [Any]值,我想通过这样的模式匹配来处理它:

JSONParser.parse("{foo: 'xxx', bar: 'yyy'}") match {
        case Full(Map) => println("ok")
        case x => println(x)
}

我希望这段代码能打印“ok”,而是打印

 Full(Map(foo -> xxx, bar -> yyy))

有没有人知道我的陈述有什么问题?

2 个答案:

答案 0 :(得分:2)

Full(Map)表示包含单身Full的{​​{1}}。如果你希望object Map里面有一个Map(对象Map不是一个),它应该是Full(你可以使用Full(m: Map)而不是_不需要访问该地图)

答案 1 :(得分:1)

更新:

scala> import net.liftweb.util._
import net.liftweb.util._

scala> import net.liftweb.common.Full
import net.liftweb.common.Full

scala> JSONParser.parse("{foo: 'xxx', bar: 'yyy'}") match {
 | case Full(m: Map[_, _]) => println("ok")
 | case x => println(x)
 | }
ok

scala> 

(我忘记了地图[]

周围的Full()

我不知道你的要求,但是Lift还有另一个json库,它比JSONParser更强大,它被称为lift-json