2

アプリに取り込もうとしている JSON ファイルにデータ ダンプがありますが、前処理が必要だと思います。これを行う最善の方法がわからないだけです。

ファイルの形式は、データが 1 つの JSON 配列ではなく、各行が完全な JSON 配列であるようになっています。次のように見えます:

{"username": "Bob", "id": 123456}
{"username": "Jane", "id": 456123}
{"username": "Paul", "id": 789456}
{"username": "Mary", "id": 159794}

行末にカンマ区切りはありません-括弧などはありません。これを取り込もうとすると、シードを介してJSON.parseスローしてエラーが発生します-適切なフォーマットの欠如が好きではなく、1つの完全なJSONデータセットとして望んでいます次に、各行が独自のセットになります。

このデータを取り込む最良の方法は何ですか? ありがとう!

4

3 に答える 3

4

データをインポートした後に何をするつもりなのかわかりませんが、データベースに挿入したいと思っていると思います。

次のようなrakeタスクを書きます。

task :import_users do
  File.open('/path/to/your.file', 'r') do |file|
    file.each do |line|
      user_attrs = JSON.parse line
      User.create! user_attrs
    end
  end
end
于 2012-09-25T15:54:16.637 に答える
0

常に行ごとに読み取り、各行を個別に解析できます。ただし、これはあまり最適化されていない可能性があります。例: File.readlines('filename').each { |line| ... }(1.9 以降のみ)

于 2012-09-25T15:43:47.143 に答える
0

ファイルが大きすぎない場合は、次のように変換できます。

[
 {...},
 {...},
 {...}
]

または、速度がそれほど重要でない場合は、各行をループしてインポートできます。

于 2012-09-25T15:44:36.187 に答える