如何将case类转换为Map(在Scala.js中)
如何将如何将case类转换为Map(在Scala.js中),scala,scala.js,Scala,Scala.js,如何将案例类转换为映射,其中案例类的字段成为键 例如: case class Person(name: String, age: Int) val p = Person("dude", 89) val map = p.toMap // <-- ??? 这通常是通过反射或宏实现的,因为它涉及查找Scala字段的名称,而Scala字段在运行时不存在。在Scala.js中,由于运行时反射不存在,所以只能使用宏 有些序列化库使用宏自动执行此转换。下面是几个在Scala.js中工作的候选项:
案例类
转换为映射
,其中案例类
的字段成为键
例如:
case class Person(name: String, age: Int)
val p = Person("dude", 89)
val map = p.toMap // <-- ???
这通常是通过反射或宏实现的,因为它涉及查找Scala字段的名称,而Scala字段在运行时不存在。在Scala.js中,由于运行时反射不存在,所以只能使用宏 有些序列化库使用宏自动执行此转换。下面是几个在Scala.js中工作的候选项:
- (-如果需要干净的地图,可能不适合您)
write
应该给您一个JSON对象(给定适当的隐式),然后您可以将其转换为js.Dictionary
,然后转换为map:write(…).asInstanceOf[js.Dictionary[Any]]。toMap
有没有一种方法可以直接从case类转换为JSON对象,而不必先写入字符串,然后使用JSON.parse?
Map("name" -> "dude", "age" -> 89)