将字符串转换为映射

时间:2015-12-03 09:37:33

标签: scala

给定一个字符串:{'Name':'Bond','Job':'Agent','LastEntry':'15/10/2015 13:00'}

我想将其解析为Map[String,String],我已经尝试this answer但是当字符:在解析后的值中时它不起作用。与'字符相同,它似乎打破了每个JSON Mappers ......

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

val s0 = "{'Name':'Bond','Job':'Agent','LastEntry':'15/10/2015 13:00'}"
val s = s0.stripPrefix("{").stripSuffix("}")

然后

(for (e <- s.split(",") ; xs = e.split(":",2)) yield xs(0) -> xs(1)).toMap

这里我们将第一次出现的":"分开每个键值。此外,这是一个强有力的假设,因为密钥不包含任何":"

答案 1 :(得分:2)

您可以使用熟悉的jackson-module-scala来更好地实现这一目标。

例如:

val src = "{'Name':'Bond','Job':'Agent','LastEntry':'15/10/2015 13:00'}"
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
val myMap = mapper.readValue[Map[String,String]](src)