【问题标题】:Import JSON into Rails将 JSON 导入 Rails
【发布时间】:2012-09-25 15:39:06
【问题描述】:

我有一个 JSON 文件中的数据转储,我正试图将其拉入我的应用程序,但我认为它需要一些预处理,只是不确定执行此操作的最佳方法。

文件的格式使得数据不是一个 JSON 数组,而是每一行都是一个完整的 JSON 数组。看起来像:

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

行尾没有逗号分隔 - 没有括号等。当我尝试将其拉入时,通过我的种子 JSON.parse 说它会抛出错误 - 不喜欢缺乏适当的格式并想要它作为一个完整的 JSON 数据集,而不是每一行都是自己的集合。

提取这些数据的最佳方式是什么?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 json


    【解决方案1】:

    我不确定您在导入数据后要如何处理数据,我假设您想将其插入到数据库中。

    我会这样写一个 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
    

    【讨论】:

    • 工作得很好——正是我需要的!谢谢!
    【解决方案2】:

    您总是可以逐行阅读,并分别解析每一行。不过,这可能不是很优化。一个例子:File.readlines('filename').each { |line| ... }(仅在 1.9+ 中)

    【讨论】:

      【解决方案3】:

      如果文件不是太大,您可以将其转换为:

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

      或者如果速度不是太关键,你可以遍历每一行并导入它。

      【讨论】:

      • 感谢 Cymen - 文件可能很大,所以我需要一个自动化的解决方案。
      猜你喜欢
      • 2021-12-23
      • 2015-05-01
      • 2015-12-29
      • 2013-06-26
      • 2017-12-12
      • 2017-01-16
      • 2017-04-05
      • 2016-10-22
      • 1970-01-01
      相关资源
      最近更新 更多