将查询字符串转换为 Scala 中的映射

Mic*_*ael 8 dictionary scala query-string

我有一个这种形式的查询字符串:

val query = "key1=val1&key2=val2&key3=val3
Run Code Online (Sandbox Code Playgroud)

我想用上面的键/值对创建一个地图。到目前为止,我是这样做的:

//creating an iterator with 2 values in each group. Each index consists of a key/value pair
val pairs = query.split("&|=").grouped(2)

//inserting the key/value pairs into a map
val map = pairs.map { case Array(k, v) => k -> v }.toMap
Run Code Online (Sandbox Code Playgroud)

像我一样这样做有什么问题吗?如果是这样,是否有一些我可以使用的库来做到这一点?

mat*_*fax 3

这是使用URLEncodedUtils 的方法:

import java.net.URI

import org.apache.http.client.utils.URLEncodedUtils
import org.apache.http.{NameValuePair => ApacheNameValuePair}

import scala.collection.JavaConverters._
import scala.collection.immutable.Seq

object GetEncodingTest extends App {
  val url = "?one=1&two=2&three=3&three=3a"
  val params = URLEncodedUtils.parse(new URI(url), "UTF_8")

  val convertedParams: Seq[ApacheNameValuePair] = collection.immutable.Seq(params.asScala: _*)
  val scalaParams: Seq[(String, String)] = convertedParams.map(pair => pair.getName -> pair.getValue)
  val paramsMap: Map[String, String] = scalaParams.toMap
  paramsMap.foreach(println)
}
Run Code Online (Sandbox Code Playgroud)