2014-07-10 33 views
0

我從外部服務處收到JSON,包含我current_user的培訓信息(通過電子郵件)。如何解析帶數組的json與演示者的集合?

{ 
    「id:」5357c5d17303b5357c5d173078」, 
    「email」:」[email protected]」, 
    」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的一些對象,以便能夠使用它像:

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

是主持人神的方式來處理?

回答

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 %>