[英]Filter through nested JSON object and obtain JSON with specific keys, using Ruby
我目前有一个类似于JSON的嵌套对象
{
"People": [
{
"Name": "James",
"Age": "18",
"Gender": "Male",
"Sports": []
},
{
"Name": "Sarah",
"Age": "19",
"Gender": "Female",
"Sports": [
"Soccer",
"Basketball",
"Football"
]
}
]
}
作为Ruby的新手,我的目标是过滤整个json并仅返回“ Sports”数组具有内容的json对象。 因此,在上述情况下,我希望获得以下对象作为最终结果:
{
"Name": "Sarah",
"Age": "19",
"Gender": "Female",
"Sports": [
"Soccer",
"Basketball",
"Football"
]
}
我是否必须启动一种新方法来执行此操作? 还是在这种情况下使用常规的红宝石电话会起作用?
如果要从请求中获取JSON对象,则要对其进行解析,然后可以遍历哈希和数组以查找所需的信息。 参见http://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html
您的情况是这样的:
require 'json'
parsed_json = JSON.parse('{"People": [ ... ]}')
parsed_json["People"].each do |person|
puts person if person["name"] == "Sarah"
end
尽管@philipyoo答案是正确的,但它缺少有关如何“过滤”已解析的JSON的解释。 如果您不Array#keep_if
红宝石,请看看Array#keep_if
: http: Array#keep_if
require 'json'
people = JSON.parse("{long JSON data ... }")
people_with_sports = people.fetch('People', []).keep_if do |person|
!person.fetch('Sports', []).empty?
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.