我有这样的地图:
Map("first_key"->"first_value","second_key"->Map("second_first_key"->"second_first_value"))
如何在scala中以递归方式将所有键转换为这样:
Map("firstKey"->"first_value","secondKey"->Map("secondFirstKey"->"second_first_value"))
解决方法
这应该做你想要的:
def convert(m: Map[String,Any]): Map[String,Any] = { m.map { case (k,v) => val k2 = toCamel(k) val v2: Any = v match { case s: String => s case x: Map[String,Any] => convert(x) } k2 -> v2 } } def toCamel(s: String): String = { val split = s.split("_") val tail = split.tail.map { x => x.head.toUpper + x.tail } split.head + tail.mkString } val m = Map("first_key"->"first_value","second_key"->Map("second_first_key"->"second_first_value")) convert(m) // Map(firstKey -> first_value,secondKey -> Map(secondFirstKey -> second_first_value))