一个文件中有多个JSON对象 - 可以使用gsub变成一个对象吗?

时间:2016-08-09 18:10:00

标签: arrays json ruby regex parsing

我一直在完成将包含多个JSON对象的文件转换为CSV的任务。为了使事情变得更容易,我决定采取对象并尝试将它们变成一个对象,这样我就可以更容易地解析它。这是我的问题:因为数据文件只是一堆没有逗号的数组,所以我不能使用flatten方法。 数据文件如下所示:

[{"field1": "sample1", "field2":"sample2"}]
[{"field3":"sample3", "field4":"sample4"}]

正如您所看到的,它是一堆没有逗号的数组。

所以我的想法是遍历每个数组,替换"] ["使用",",然后让我的程序解析它。

所以我的目标是让文件看起来像:

[{"field1": "sample1", "field2":"sample2"}, {"field3":"sample3", "field4":"sample4"}]

我一直试图使用的代码是:

data.gsub(/\s(?=[\]\[]), ","/)

我确信这与我的Regex表达式有关。因为我试图解析&#34;] [&#34;,我已尝试使用其他正则表达式,但它们似乎都没有真正做我需要做的事情。< / p>

现在这还不行。我正在考虑尝试使用扫描或插入,但gsub似乎是删除那些内部括号并用逗号替换它们的最佳方法。

对于那些建议尝试在JSON对象上使用.foreach循环的人来说,这对我来说不起作用,因为.foreach循环不会解析同一文件中的单独对象。也许我还没有找到一种实际上适用于多个JSON对象的方法,但是如果有人有一个有效的方法,我也会试一试。

1 个答案:

答案 0 :(得分:0)

您需要做的就是找到结束括号,然后是换行符和左括号。

data.gsub(']\n[', ',')

希望这有效!