如何使用Lift将x-www-url编码的字符串解析为Map [String,String]?

Jea*_*let 8 scala lift

从Lift,我得到一个表格的字符串

TOKEN=EC%2d454178600K772032D&TIMESTAMP=2011%2d06%2d29T13%3a10%3a58Z&CORRELATIONID=cbd56e97cad38&ACK=Success&VERSION=64&BUILD=1936884
Run Code Online (Sandbox Code Playgroud)

来自HTTP请求的响应.

虽然它可能是非常重要的,但是我找不到将其解析为好的Lift函数Map[String, String].有帮助吗?

Dav*_*lak 13

来自Lift的Req.scala:

// calculate the query parameters
lazy val queryStringParam:  (List[String], Map[String, List[String]]) = {
  val params: List[(String, String)] =
    for {
      queryString <- request.queryString.toList
      nameVal <- queryString.split("&").toList.map(_.trim).filter(_.length > 0)
      (name, value) <- nameVal.split("=").toList match {
        case Nil => Empty
        case n :: v :: _ => Full((urlDecode(n), urlDecode(v)))
        case n :: _ => Full((urlDecode(n), ""))
      }} yield (name, value)

        val names: List[String] = params.map(_._1).distinct
  val nvp: Map[String, List[String]] = params.foldLeft(Map[String, List[String]]()) {
    case (map, (name, value)) => map + (name -> (map.getOrElse(name, Nil) ::: List(value)))
  }

  (names, nvp)
}
Run Code Online (Sandbox Code Playgroud)