Em scala, como transformar os valores do objeto em Map [String, String]?
Vamos dizer que eu tenho essa classe
case class Test (id: Long, name: String)
e uma instância dessa classe:
Test :
id -> 1
name -> toto
Eu gostaria de criar um Map [String, String] como segue:
Map( "id" -> "1", "name" -> "toto")
Minha pergunta é: existe uma maneira de transformar essa instância do teste em [String, String]? Eu quero evitar usar um método como este:
def createMap(instance: Test): Map[String, String] = {
val map = new Map[String, String]
map.put("id", instance.id.toString)
map.put("name", instance.name)
map
}
Se não houver um método para fazer isso no Scala, existe uma maneira de iterar propriedades de classe? Talvez eu possa criar uma função genérica para fazer isso:
def createMap(instance: T): Map[String, String] = {
val map = new Map[String, String]
//pseudocode
for ((name, value) <- instance.getClassProperties.getValues) {
case value.isInstanceOf[String] : map.push(name, value)
case _ : map.push(name, value.toString)
}
map
}
Isso é possível ? Se você tem bons exemplos / links, estou interessado.