我有一个JSON响应,它以“BQresponse”
中的字符串形式存储{"kind":"bigquery#queryResponse", "schema":{"fields":[{"name":"Revenue", "type":"INTEGER", "mode":"NULLABLE"}, {"name":"Country", "type":"STRING", "mode":"NULLABLE"}]}, "jobReference":{"projectId":"curious-idea-532", "jobId":"job_S5rTcY2vwEu-amtrxb8NRPWiynU"}, "totalRows":"3", "rows":[{"f":[{"v":"100"}, {"v":"Ireland"}]}, {"f":[{"v":"200"}, {"v":"Netherlands"}]}, {"f":[{"v":"50"}, {"v":"Singapore"}]}], "totalBytesProcessed":"0", "jobComplete":true, "cacheHit":true}
我正在尝试将其转换为双线响应(以便稍后导出为CSV),看起来完全像这样:
Country||Sum of Revenue|,Ireland,Netherlands,Singapore
Revenue,100,200,50
到目前为止,我已经提取了第一部分,如下所示:
puts BQresponse[/#{D1_mark1}(.*?)#{D1_mark2}/m, 1]+"||"+BQresponse[/#{M1_mark1}(.*?)#{M1_mark2}/m, 1]
接下来我需要提取“爱尔兰,荷兰,新加坡”。但是我不能使用与上面相同的方法,因为字符串更新时可能会有更多或更少的值(可能只有2或5个国家/地区)。
该字符串包含一个部分,其中显示“totalRows”:“3”,“ - 这3是预期国家/地区的数量,我想可以在某个循环中使用/为每种类型。但我不是确定如何最好地接近这一点。
第二行的数字值面临完全相同的问题(每个国家/地区都有一个数字)。第二行的“收入”只是在第一行重复“收入”,删除了“Sum_of_”。
赞赏有关前进方向的建议。
此外,这是一个有效的JSON,如果我完全偏离轨道并且首先将此字符串转换为JSON会更容易,那也没关系。
谢谢!
答案 0 :(得分:0)
有一个很棒的宝石,json2csv
here我以前必须使用它。
要试用它,我会将一个示例JSON响应保存到一个名为sample.json
的文件中,然后在您的终端中运行:
json2csv convert sample.json