2017-02-13 47 views
-1

什麼是實現以下?:迭代JSON文件到Ruby對象數組

class Whatever 
    attr_accessor :id, :name, :email 
end 

JSON文件的最好方法:

[{"id":"1","name":"Some Name","email":"[email protected]"}, 
{"id":"2","name":"Another Name","email":"[email protected]"}] 

現在我想讀JSON文件中,解析它成對象Whatever的陣列,使得array[0]具有與第一JSON對象Whatever類對象和array[1]將具有與第二JSON對象Whatever類對象。

什麼是Ruby來實現這一目標的最佳方式是什麼?

+2

_Sidenote:_在紅寶石你應該不適用我以大寫字母開頭的課程。另外,你必須展示你已經嘗試過的東西。 – mudasobwa

回答

2

沒有一個所有漂亮的方式,如果這是你對類:

JSON.parse(whatevers).map do |whatever| 
    element = Whatever.new 
    element.id = whatever['id'] 
    element.name = whatever['name'] 
    element.email = whatever['email'] 
    element 
end 

但是,如果添加索引方法,如:

class Whatever 
    def []=(name, value) 
    instance_variable_set("@#{name}", value) 
    end 
end 

它取決於:

JSON.parse(whatevers, object_class: Whatever) 
+1

不要忘記[OpenStruct(https://ruby-doc.org/stdlib-2.4.0/libdoc/ostruct/rdoc/OpenStruct.html)像這樣的情況。 – tadman

+0

在你的第一個例子中,我假設這個數組是'whatevers'?在JSON.parse中。 –

+0

@GregBrethen,'whatevers'是一個字符串,持有你的問題中描述的json。又名''[{ 「ID」: 「1」, 「名」: 「有些名稱」, 「電子郵件」: 「[email protected]」},{ 「ID」: 「2」, 「名」:「另一個名稱」,‘電子郵件’:‘[email protected]’}]'' – ndn