我有兩個嵌套的case類:轉換巢式病例類嵌套地圖斯卡拉
case class InnerClass(param1: String, param2: String)
case class OuterClass(myInt: Int, myInner: InnerClass)
val x = OuterClass(11, InnerClass("hello", "world"))
,我想轉換爲Map類型的嵌套地圖[字符串,任何]讓我得到這樣的:
Map(myInt -> 11, myInner -> Map(param1 -> hello, param2 -> world))
當然,解決方案應該是通用的,適用於任何案例類。
注意: This discussion給出瞭如何將單個案例類映射到Map的很好的答案。但我無法適應嵌套的案例類。相反,我得到:
Map(myInt -> 11, myInner -> InnerClass(hello,world)
這個問題不是很清楚。 Map中的「myInt」和「myInner」是什麼?它們是從'OuterClass'實例中獲取的,還是它被用作鍵的'String'?無論如何,使用'Any'表示你可能在像Scala這樣的靜態類型語言中做錯了什麼。澄清你想要做什麼,你會得到一些有用的建議。 – 2013-03-10 17:04:32
檢查'productIterator',這是一種遍歷'Product's的所有值的方法。所有案例分類都是「產品」。 – pedrofurla 2013-03-10 18:13:08
@ luigi-plinge不知道我是否正確回答你的問題。在Map的上下文中,myInt和myInner都來自OuterClass實例,並用作鍵。這是爲了通用。 爲了闡明背景,我在我的應用程序中爲主對象使用了嵌套的大小寫類。此外,我有[Bencode](https://en.wikipedia.org/wiki/Bencode)[編碼器](https://github.com/pyronicide/scala-bencode/blob/master/src/main/scala/ org/saunter/bencode/Bencode.scala#L105),它接受字符串,Ints和地圖。我的目的是將我的對象轉換爲嵌套地圖並將其提供給Bencode編碼器 – jans 2013-03-10 23:52:18