Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何根据内部散列中的键值按顺序最有效地迭代散列?_Ruby On Rails_Json_Hash Of Hashes - Fatal编程技术网

Ruby on rails 如何根据内部散列中的键值按顺序最有效地迭代散列?

Ruby on rails 如何根据内部散列中的键值按顺序最有效地迭代散列?,ruby-on-rails,json,hash-of-hashes,Ruby On Rails,Json,Hash Of Hashes,我得到了一个由网站API返回的JSON散列,我想根据内部散列中特定键的值来解析和显示该散列 我可以想出一些解决方案来实现这一点,但它们需要很多行代码,而且似乎效率不高。考虑到对约定的关注超过了对配置的关注,肯定有一种方法可以在Rails中实现本地访问。我在谷歌上搜索了一下,但没有找到任何关于这个问题的信息 API的响应示例: [{"banner":"01197271","birthday":"1991-01-11","committee_id":1,"created_at":"2012-08-0

我得到了一个由网站API返回的JSON散列,我想根据内部散列中特定键的值来解析和显示该散列

我可以想出一些解决方案来实现这一点,但它们需要很多行代码,而且似乎效率不高。考虑到对约定的关注超过了对配置的关注,肯定有一种方法可以在Rails中实现本地访问。我在谷歌上搜索了一下,但没有找到任何关于这个问题的信息

API的响应示例:

[{"banner":"01197271","birthday":"1991-01-11","committee_id":1,"created_at":"2012-08-08T01:56:02-05:00","email":"me@example.com","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":"you@example.com","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":""}]

潜在的解决方案是遍历每个内部散列,确定相关键值的值,然后根据键值与已测试的散列的位置进行存储。完成后,返回。

确定。因此,如果您有设置为解析此信息的对象,则这些对象可以根据哈希的参数自行构建。所以你可以这样做

object = MyObject.create(your_hash_parameters)
其中,
您的\u散列\u参数
是您在示例中提供的参数

我不确定如果有比你的对象知道如何处理更多的参数会发生什么,如果它仍然会构建自己或不。如果是这种情况,您可以使用
delete\u If
方法排除不需要的属性


还有一个注意事项,如果这不是您想要保存到数据库中的内容,并且它只是显示临时信息。我将使用表示您正在显示的属性的
attr\u访问器设置一个模型。

如评论中所述,我将创建一个ActiveResource对象并向其添加相关方法。

发布您的一些解决方案以及api响应的示例。如您所愿,@SergioTulentsev.Requests已添加,但我不相信细节与有效的解决方案相关,因为我要求在处理类似问题时提供最佳实践。创建ActiveResource对象并向其添加相关方法。自然语言是不明确的。代码不是。只是说谢谢,崔普。我应该考虑使用数据库来实现这一点。对,还要注意的是,从技术上讲,您不需要使用数据库。它们可以只是表示要解析数据的属性的临时属性访问器。(最后一段)