Home > Software engineering >  Seeding rails project with Json file
Seeding rails project with Json file

Time:02-15

I'm at a lost and my searches have gotten me nowhere.

In my seeds.rb file I have the following code

require 'json'

jsonfile = File.open 'db/search_result2.json'
jsondata = JSON.load jsonfile
#jsondata = JSON.parse(jsonfile)

jsondata[].each do |data|
  Jobpost.create!(post: data['title'],
                  link: data['link'],
                  image: data['pagemap']['cse_image']['src'] )
end

Snippet of the json file looks like this:

  {
    "kind": "customsearch#result",
    "title": "Careers Open Positions - Databricks",
    "link": "https://databricks.com/company/careers/open-positions",
    "pagemap": {
      "cse_image": [
        {
          "src": "https://databricks.com/wp-content/uploads/2020/08/careeers-new-og-image-sept20.jpg"
        }
      ]
    }
  },

Fixed jsondata[].each to jasondata.each. Now I'm getting the following error: TypeError: no implicit conversion of String into Integer

CodePudding user response:

jsondata[] says to call the [] method with no arguments on the object in the jsondata variable. Normally [] would take an index like jsondata[0] to get the first element or a start and length like jsondata[0, 5] to get the first five elements.

You want to call the each method on jsondata, so jsondata.each.

CodePudding user response:

So this is very specific to what you have posted:

require 'json'

file = File.open('path_to_file.json').read
json_data = JSON.parse file

p json_data['kind'] #=> "customsearch#result"
# etc for all the other keys

now maybe the json you posted is just the first element in an array, in which case you will indeed have to iterate:

require 'json'

file = File.open('path_to_file.json').read
json_data = JSON.parse file

json_data.each do |data|
  p data['kind'] #=> "customsearch#result"
end
  • Related