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

标签 scala lift

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

TOKEN=EC%2d454178600K772032D&TIMESTAMP=2011%2d06%2d29T13%3a10%3a58Z&CORRELATIONID=cbd56e97cad38&ACK=Success&VERSION=64&BUILD=1936884

来自 HTTP 请求的响应。

尽管这可能非常简单,但我找不到将其解析为不错的 Lift 函数 Map[String, String] .有什么帮助吗?

最佳答案

来自 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)
}

关于scala - 如何使用 Lift 将 x-www-url 编码的字符串解析为 Map[String, String]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521419/

相关文章:

scala - 在dispatch-classic中使用cookie

scala - 如何返回前 N 个斐波那契数列?

scala - 使用scala下载图像文件

scala - 使用 Spark Scala 从 String 到 Array[Structype] 的模式转换

xml - 在 Scala 中编写非自结束标签 XML

scala - 是否有 Lift 备忘单/quickref?

java - Tomcat 返回带有一字节响应的 HTTP 500

java - 如何在 Tomcat 5.5 中填充 System.getProperty()

eclipse - 斯卡拉/电梯 : Set up hotdeploy through Eclipse?

generics - Scala 泛型与 C# 的比较