'How to retrieve data from an external nested json file on seed.rb

I want to retrieve data from an external nested JSON file on my seed.rb The JSON looks like this:

{"people":[{"name":"John", "age":"23"}, {"name":"Jack", "age":"25"}]}

I saw a solution on GitHub but it only works on non-nested JSON.



Solution 1:[1]

Let's say you have JSON file db/seeds.json:

{"people":[{"name":"John", "age":"23"}, {"name":"Jack", "age":"25"}]}

You can use it like this in your db/seeds.rb:

seeds = JSON.parse(Rails.root.join("db", "seeds.json"), symbolize_names: true)

User.create(seeds[:people])

seeds[:people] in this case is array of hashes with user attributes

Solution 2:[2]

if you have:

json_data = {"people":[{"name":"John", "age":"23"}, {"name":"Jack", "age":"25"}]}

when you do:

json_data[:people]

you'll get an array:

[{:name=>"John", :age=>"23"}, {:name=>"Jack", :age=>"25"}]

if you want to use this array to populate a model, you can do:

People.create(json_data[:people])

if you want to read each item values, you can iterate through your data, like:

json_data[:people].each {|p| puts p[:name], p[:age]}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mechnicov
Solution 2 Paulo Belo