2016-08-08 9 views
0

現在、API呼び出しの複数のJSONオブジェクトを含む.txtファイルを使用しています。これらのオブジェクトをすべて.csvファイルに解析する方法を探しています。過去には、私は1つのJSONオブジェクトを.csvに取得することができましたが、複数のためにそれを行う方法がわかりません。複数のJSONオブジェクトをRubyを使用してCSVに解析する

サンプルJSON:唯一のJSONオブジェクトに動作しているようですが、

[{"field1":["value1"], "field2": ["value2"]}] 
[{"field1":["value1"], "field2": ["value2"]}] 
[{"field1":["value1"], "field2": ["value2"]}] 

私は現在、CSVにJSONをプッシュするために使用しているコードは、以下の通りです。私が必要と思うのは、各オブジェクトを通過させてループを繰り返すループです。

require 'csv' 
require 'json' 

CSV.open("sample.csv", "w") do |csv| 
csv << ["field1", 
"field2" 
] 
    JSON.parse(File.open("json.txt").read).each do |hash| #open json to parse 

    csv << hash.values 

    end 
end 

誰でも私に何か提案を与えることはできますか?私は、複数のオブジェクトの解析のためのソリューションを見つけましたが、それは本当にCSVの部分で私を助けるものはありません。このものの

+0

出力は今何ですかを追加するのでしょうか?値をアンラップする必要があるようです。 hash.values.flattenを実行してください。ハッシュも配列である必要があります。そのため、値を取り出す必要もあります。 –

+0

複数のJSONドキュメントのファイルがあります。サンプルのデータのように、ファイルに各行に単一のJSONドキュメントがある場合、 'read'を使用する代わりに' foreach'を使用して各行を別々に処理します。あなたがJSONの作成者であれば、出力を修正して、適切なJSONを生成するようにしてください。このJSONは、(もちろんJSONでエンコードされた)単一のハッシュ配列でなければなりません。行を解析したら、必要に応じてCSVに渡します。 –

+0

@IvanYouroff現在、私が使用するコードは、1つのJSONオブジェクトからCSVファイルを正常に生成できます。 –

答えて

0
require 'csv' 
require 'json' 

CSV.open("sample.csv", "w") do |csv| 
    csv << ["field1", "field2"] 
    File.open("json.txt").each do |line| 
    csv << JSON.parse(line).first.values.flatten 
    end 
end 

は、フォーマットの変更を考慮し、本当に安全ではないので、私はいくつかの検証

関連する問題