是否有任何现成的库可以将JSON字符串(很可能是多行数据)转换为CSV文件。
我在Scala中搜索了很多这样的库,但没有找到。
我需要做的是从DB源检索数据,结果集以JSON格式呈现,然后将它们转换成CSV。
之前我将JSON转换为相关的Seq [case-class],并尝试使用类似于:
但是,在包含深层次结构的情况下,这些都没有太大用处。
有任何建议吗?
是否有任何现成的库可以将JSON字符串(很可能是多行数据)转换为CSV文件。
我在Scala中搜索了很多这样的库,但没有找到。
我需要做的是从DB源检索数据,结果集以JSON格式呈现,然后将它们转换成CSV。
之前我将JSON转换为相关的Seq [case-class],并尝试使用类似于:
但是,在包含深层次结构的情况下,这些都没有太大用处。
有任何建议吗?
product-collections 可以将 Seq[case class] 转换为 csv 格式。
case class Foo(a:Int,b:String)
Seq(Foo(1,"aa"),Foo(2,"bb")).csvIterator.mkString("\n")
res27: String =
1,"aa"
2,"bb"
不太确定您所说的“深层次结构”是什么意思。您是指像这样的结构吗?
case class Baz(i: Int)
case class Bar(baz: Baz)
case class Foo(bar: Bar)
import kantan.csv.ops._
import kantan.csv.generic.codecs._
val fs: List[Foo] = ???
fs.foldLeft(new File("output.csv").asCsvWriter[Foo])(_ write _).close
import kantan.csv._
implicit val bazCodec = Codec.caseCodec1(Baz.apply, Baz.unapply)(0)
implicit val barCodec = Codec.caseCodec1(Bar.apply, Bar.unapply)(0)
implicit val fooCodec = Codec.caseCodec1(Foo.apply, Foo.unapply)(0)
有点啰嗦,但我认为还是可以接受的。