2015-12-03 2 views
3

Задана строка: {'Name':'Bond','Job':'Agent','LastEntry':'15/10/2015 13:00'}Преобразование строки к карте

Я хочу, чтобы разобрать его в Map[String,String], я уже пробовал this answer, но она не работает, когда персонаж : находится внутри разобранного значения. То же самое с персонажем ', кажется, разбивает каждый JSON Mappers ...

Спасибо за любую помощь.

ответ

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 

Здесь мы разбиваем каждый ключ-значение на первое вхождение ":". Далее это сильное предположение, поскольку ключ не содержит ":".

+0

И вы должны заботиться о {} – Nyavro

+0

@Nyavro сделано, раздели префикс и суффикс. благодаря – elm

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) 
Смежные вопросы