如何将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中工作的候选项:

  • (-如果需要干净的地图,可能不适合您)

感谢您的回答,我以前很累,地图有问题,请稍候!。您提到的问题是关于将映射序列化为JSON,而不是将[case类]序列化为映射。请告诉我确切的API名称,从我看到的文档中,read-JS,write,writeJs,所以我尝试这样做,read[Map[String,Any](write[Person](Person)(“dude”,89))
write
应该给您一个JSON对象(给定适当的隐式),然后您可以将其转换为
js.Dictionary
,然后转换为map:
write(…).asInstanceOf[js.Dictionary[Any]]。toMap
有没有一种方法可以直接从case类转换为JSON对象,而不必先写入字符串,然后使用JSON.parse?
Map("name" -> "dude", "age" -> 89)