Как правильно использовать файл .json для объектов на ruby? - PullRequest
0 голосов
/ 01 ноября 2018

Я учусь и делаю некоторые упражнения, но я застрял на этом.

it 'Converts a JSON to an object of type recipe' do
recipe = Recipe.from_json('data/pudim.json')

expect(recipe.class).to eq Recipe
expect(recipe.title).to eq 'Pudim'
expect(recipe.description).to eq 'O melhor pudim da sua vida!'
expect(recipe.ingredients).to eq 'Leite condensado, ovos e leite'
expect(recipe.cook_time).to eq 80
expect(recipe.featured).to eq true
end

Требуется, чтобы вы создали метод, чтобы он возвращал JSON-файл, содержащий хэши объектов.

В настоящее время это то, что я сделал:

class Recipe
    require 'json'
    attr_accessor :title, :description, :ingredients, :cook_time, :featured

    def initialize(arr)
        @title = arr[:title]
        @description = arr[:description]
        @ingredients = arr[:ingredients]
        @cook_time = arr[:cook_time]
        @featured = arr[:featured]
    end

    def self.from_json(path)
        arquivo = File.read(path)
        recipe = JSON.parse(arquivo)
    end
end

rspec говорит:

   Failure/Error: expect(recipe.class).to eq Recipe

   expected: Recipe
        got: Hash

   (compared using ==)

   Diff:
   @@ -1,2 +1,2 @@
   -Recipe
   +Hash

Я пробовал много разных способов синтаксического анализа JSON для объектов, но не могу этого сделать, и документация по Ruby выглядит довольно грязно. Что не так в моем коде? Кроме того, что является хорошим местом для поиска документации по Ruby, кроме сайта ruby-doc.org?

1 Ответ

0 голосов
/ 03 ноября 2018

Попробуйте это

def self.from_json(path)
  arquivo = File.read(path)
  Recipe.new JSON.parse(arquivo)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...