是否有將案例類轉換爲CSV值的優雅方法?在Scala中將案例類轉換爲CSV
例如 -
case class Person(name : String, age : Int, gender: String, address : Option[String])
我想使用宏,但想知道是否有任何其他的替代品。
注意:case類不包含任何用戶定義的字段。
是否有將案例類轉換爲CSV值的優雅方法?在Scala中將案例類轉換爲CSV
例如 -
case class Person(name : String, age : Int, gender: String, address : Option[String])
我想使用宏,但想知道是否有任何其他的替代品。
注意:case類不包含任何用戶定義的字段。
implicits
和productIterator
怎麼樣?
implicit class CSVWrapper(val prod: Product) extends AnyVal {
def toCSV() = prod.productIterator.map{
case Some(value) => value
case None => ""
case rest => rest
}.mkString(",")
}
Person("name", 30, "male", None).toCSV()
product-collections也會爲您生成csv。產品集合非常好;它是免費的反射&與scala-js兼容。
import com.github.marklister.collections.io._
case class Foo(a:Int,b:String)
Seq(Foo(1,"hello"),Foo(2,"World")).csvIterator.mkString("\n")
res2: String =
1,"hello"
2,"World"
我是產品的集合的作者
好主意,但需要的' 「':'斯卡拉>人員正確轉義(」 \ 「」 30, 「男性」,無)。 toCSV() res1:String =「,30,male,' –
@AlekseyIzmailov我會將這些細節的細節留給實現者,因爲他們的用例可能允許它 –
'value.toString.replace(」\「」, \\\ 「」)' – John