의 내가이 클래스스칼라에서 객체의 값을 Map [String, String]으로 변환하는 방법은 무엇입니까?
case class Test (id: Long, name: String)
이 클래스의 인스턴스가 있다고 가정 해 봅시다 :
Test :
id -> 1
name -> toto
나는 다음과 같은지도 [문자열, 문자열] 만들려는
:
Map("id" -> "1", "name" -> "toto")
을
제 질문은이 Test 인스턴스를 Map [String, String]으로 변환 할 수 있습니까? 나는이 일 등의 방법을 사용하지 않도록하려면 : 스칼라에서 그렇게 할 수있는 방법이없는
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
}
경우, 클래스의 속성을 반복하는 방법은 무엇입니까? 어쩌면 내가 할 수있는 일반적인 함수를 만들 수 있습니다 :
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
}
그것은 가능합니까? 좋은 예제/링크가 있으면 관심이 있습니다.
[이 질문에 대한 답변] (http://stackoverflow.com/questions/2224251/reflection-on-a-scalacase-class)이 도움이 될 수 있습니다. – incrop
일반 솔루션이 마음에 들지는 않지만이 문제는'Map ("id"-> t.id.toString, "name"-> t.name)''t '가 '시험 '. – sschaef
팁 주셔서 감사합니다! – alexgindre