0

我从外部服务JSON收到我的 current_user(通过电子邮件)的培训信息。

{
    “id:”5357c5d17303b5357c5d173078”,
    “email”:”some@email.com”,
    ”trainings”:[
        {
            “training_id“: “5357c4e5d61f15357c4e5d622f“,
            “name”: ”training 1”,
            “state”: “started”
        },
        {
            “training_id“: “5357af490fcda5357af490fd15“,
            “name”: ”training 2”,
            “state”: “finished”
        }
    ]
}

我想解析这个 JSON 并将其呈现在我的页面上。所以我想到了主持人。

class EducationPresenter
  attr_reader :email, :trainings

  def initialize json
    @email = json['email']
    @trainings = json['trainings']
  end
end

所以现在我可以在我的视图中使用它:

Email: <%= @presenter.email %>
<% @presenter.trainings.each do |training| %>
Training: <%= training['training_id'] %>
<% end %>

我如何也可以解析 JSON 并将其转换为某个 Object 以便能够像这样使用它:

@presenter.training.each {|t| t.state }

主持人上帝有办法处理吗?

4

1 回答 1

0

使用JSON::parse

class EducationPresenter
  attr_reader :presneter

  def initialize json
    json_hash = JSON.parse(json)
    @presneter = OpenStruct.new(
                                email: json_hash['email'],
                                trainings: json_hash['trainings']
                               )
  end
end

阅读Parsing JSON以了解这一点OpenStruct

现在你创建你的对象,

 @education_presenter = EducationPresenter.new(json_string)

并查看:

Email: <%= @education_presenter.presenter.email %>
<% @education_presenter.presenter.trainings.each do |training| %>
Training: <%= training['training_id'] %>
<% end %>
于 2014-07-10T10:43:16.567 回答