@@ -75,7 +75,7 @@ case class Dimension(key: String, value: String)
7575### CSV字符串转Scala
7676
7777``` scala
78- val metrics : List [Option [Metric ]] = ScalableBuilder [Metric ]
78+ val metrics : List [Option [Metric ]] = ReaderBuilder [Metric ]
7979 // setField用于设置dimensions字段应该怎样从CSV行的该列中被解析出来
8080 // dims值为字符串:{"city":"北京","os":"Mac"}
8181 // StringUtils.extraJsonValues 是默认提供的解析方法,当然也可以使用JSON,但是为了不依赖任何第三方库,我选择由用户指定如何解析,也更加灵活
@@ -91,7 +91,7 @@ val metrics: List[Option[Metric]] = ScalableBuilder[Metric]
9191> 将上面的` metrics ` 转换为CSV行数据
9292
9393``` scala
94- val csv : String = CsvableBuilder [Metric ]
94+ val csv : String = WriterBuilder [Metric ]
9595 .setField(
9696 _.dimensions,
9797 (ds : List [Dimension ]) =>
@@ -106,7 +106,7 @@ val csv: String = CsvableBuilder[Metric]
106106
107107``` scala
108108val metrics =
109- ScalableBuilder [Metric ]
109+ ReaderBuilder [Metric ]
110110 .setField[Seq [Dimension ]](
111111 _.dimensions,
112112 dims => StringUtils .extractJsonValues[Dimension ](dims)((k, v) => Dimension (k, v))
@@ -176,10 +176,10 @@ implicit val format = new TsvFormat {
176176}
177177// 使用format隐藏参数
178178// 这个例子没有使用setField,因为这里的Metric是case class Metric(time: Long, entity: Int, dimensions: String, metricName: String, metricValue: Int)
179- val metrics = ScalableBuilder [Metric ].convertFrom(ClassLoader .getSystemResourceAsStream(" simple_data_header.tsv" ))
179+ val metrics = ReaderBuilder [Metric ].convertFrom(ClassLoader .getSystemResourceAsStream(" simple_data_header.tsv" ))
180180val file = new File (" ./simple_data_header.tsv" )
181181// 使用format隐藏参数
182- CsvableBuilder [Metric ].convertTo(metrics.filter(_.isDefined).map(_.get), file)
182+ WriterBuilder [Metric ].convertTo(metrics.filter(_.isDefined).map(_.get), file)
183183```
184184
185185> 实际上CSV中也使用了默认的format隐式参数` implicit val defaultCsvFormat: CsvFormat = new DefaultCsvFormat {} ` ,如果像TSV这样自己定义一个,那么就会覆盖默认的隐式。
0 commit comments