2012-08-17 29 views
0

我有一個由網站API返回的散列的JSON散列,我想根據內部散列中的特定鍵值解析和顯示。如何根據內部哈希中的鍵值最有效地迭代散列哈希?

我可以想到解決方案,可以實現這一點,但他們會採取一些代碼行,似乎並不高效。由於重點在於約定而不是配置,所以肯定在Rails中必須有一種本地方法。我搜索了一下,但沒有發現任何問題。從API

樣品響應:

[{"banner":"01197271","birthday":"1991-01-11","committee_id":1,"created_at":"2012-08-08T01:56:02-05:00","email":"[email protected]","first_name":"Dan","graduation_date":"May 2013","hometown":"San Antonio","hours_enrolled":15,"id":2,"image":{"url":null,"thumb":{"url":null},"large":{"url":null}},"invitation_accepted_at":null,"invitation_limit":null,"invitation_sent_at":null,"invitation_token":null,"invited_by_id":null,"invited_by_type":null,"last_name":"Tester","local_apt":"","local_city":"San Antonio","local_state":"Texas","local_street":"One UTSA Circle","local_zip":"78249","major":"Computer Science","permanent_apt":"","permanent_city":"","permanent_state":"","permanent_street":"One UTSA Circle","permanent_zip":"","phone":"5558813284","same_address":true,"tour_trained":false,"updated_at":"2012-08-17T03:35:26-05:00","utsa_id":"uoi431"}, 
{"banner":"","birthday":"1990-10-25","committee_id":null,"created_at":"2012-08-03T16:19:23-05:00","email":"[email protected]","first_name":"Test","graduation_date":null,"hometown":null,"hours_enrolled":null,"id":1,"image":{"url":null,"thumb":{"url":null},"large":{"url":null}},"invitation_accepted_at":null,"invitation_limit":null,"invitation_sent_at":null,"invitation_token":null,"invited_by_id":null,"invited_by_type":null,"last_name":"User","local_apt":"","local_city":"","local_state":"","local_street":"","local_zip":"","major":null,"permanent_apt":"","permanent_city":"","permanent_state":"","permanent_street":"","permanent_zip":"","phone":"","same_address":false,"tour_trained":false,"updated_at":"2012-08-15T10:05:54-05:00","utsa_id":""}] 

潛在的解決方案是經過各內部散,確定相關的鍵值,然後將其存儲的基礎上,重點值的地方它比其中的價值已經測試過的散列。完成後返回。

+2

發佈您的一些解決方案,也是該API響應的一個例子。 – 2012-08-17 08:34:56

+0

如你所願,@SergioTulentsev。 – Dan 2012-08-17 08:39:52

+0

已添加請求,但由於我在處理此類問題時要求採取最佳做法,因此我不相信具體內容與有效解決方案相關。 – Dan 2012-08-17 08:47:00

回答

0

好的,如果你有設置的對象來解析這些信息,那些對象可以根據你的散列參數構建它們自己。所以,你可以做這樣的事情

object = MyObject.create(your_hash_parameters) 

your_hash_parameters是你在你的例子給出的參數。

我不確定如果有更多的參數比您的對象知道如何處理,如果它仍然會自行構建或不構建,會發生什麼情況。如果是這種情況,您可以使用delete_if方法排除不需要的屬性。

還有一點需要注意的是,如果這不是你想要保存到你的數據庫的東西,而且它只能顯示臨時信息。我會建立一個代表您正在顯示的屬性的模型attr_accessors

+0

謝謝,@Trip。我應該考慮爲此使用數據庫。 – Dan 2012-08-17 08:58:18

+1

正確,並且請注意,您不需要在技術上使用數據庫。它們可以只是臨時屬性訪問器,它們表示要分析數據的屬性。 (最後一段) – Trip 2012-08-17 08:59:02

0

正如評論所述,我會創建一個ActiveResource對象併爲其添加相關方法。