作为编程的初学者,我正在尝试为大学的硕士论文过滤JSON文件。该文件包含大约500个哈希,其中115个是我感兴趣的。
我想做什么:
(1)过滤文件并选择我感兴趣的哈希
(2)对于每个选定的哈希,只返回一些特定的键
包含散列(“贷款”)的数组的格式包括:
{"header": {
"total":546188,
"page":868,
"date":"2013-04-11T10:21:24Z",
"page_size":500},
"loans": [{
"id":427853,
"name":"Peter Pan",
...,
"status":"expired",
"paid_amount":525,
...,
"activity":"Construction Supplies",
"sector":"Construction"," },
... ]
}
具体而言,我想拥有以下内容:
(1)用“status”过滤掉“loan”哈希:“expired”
(2)仅为每个此类“过期”贷款返还某些密钥:“id”,“name”,“activity”,...
(3)最后,将所有内容导出到一个文件中,我可以在Excel中或使用某些统计软件(SPSS或Stata)进行分析
到目前为止,我自己想出的是:
require 'rubygems'
require 'json'
toberead = File.read('loans_868.json')
another = JSON.parse(toberead)
read = another.select {|hash| hash['status'] == 'expired'}
puts hash
这显然是完全不完整的。我感到完全迷失了。 现在,我不知道在哪里以及如何继续。尽管谷歌搜索并阅读了大量有关如何过滤JSON的文章......
有没有人可以帮我解决这个问题?
答案 0 :(得分:1)
JSON将被解析为哈希,'header'是一个关键,'loan'是另一个关键。
所以在你的JSON.parse行之后,你可以做
loans = another['loans']
现在贷款是一系列哈希值,每个哈希值代表您的一笔贷款。 然后你可以做
expired_loans = loans.select {|loan| loan['status'] == 'expired'}
puts expired_loans
获得所需的输出。