Scala类似CSV的数据源以平面json表示

时间:2015-05-09 23:45:51

标签: json scala

我一直在寻找如何在CSV文件中展平给定数据的JSON表示。

假设CSV格式为:

headerFieldName_1, ... headerFieldName_n,
value_1.1, ... , value_1.n
value_2.1, ... , value_2.n
...
value_m.1, ... , value_m.n

现在,我想得到的扁平JSON如下:

[ {headerFieldName_1 : value_1.1, ... , headerFieldName_n : value_1.n},
  {headerFieldName_1 : value2.1, ... , headerFieldName_n : value_2.n},
...
  {headerFieldName_1 : value_m.1, ... , headerFieldName_n : value_m.n},
]

由于数组中的每个元素都是带有自定义表示的JSON对象,因此我认为没有方便的JsValue可供使用。

我认为在这种情况下使用Format[x]没有用,因为它仅对映射键/值对的数组有帮助。因此,某些自定义ReadsWrites可能更适合此问题。

1 个答案:

答案 0 :(得分:0)

如果您正在寻找,那么没有在线,但实施它非常简单。假设你的文件不是太大(否则JSON是一种可怕的格式),你需要:

  1. 阅读文件内容:scala.io.Source.fromFile("your path").getLines
  2. 处理第一行以获取标题(键)。使用line.split(",")获取单独的字段。
  3. 处理每个剩余的行,组装一个JSON对象,其中包含所有已知的键和该行的值。
  4. 将如此创建的所有对象附加到JsArray。