ruby – 有效地检查JSON响应是否包含数组中的特定元素
发布时间:2020-12-17 02:28:21 所属栏目:百科 来源:网络整理
导读:鉴于 JSON响应: { "tags": [ { "id": 81499,"name": "sign-in" },{ "id": 81500,"name": "user" },{ "id": 81501,"name": "authentication" } ]} 使用RSpec 2,我想验证此响应是否包含名称为authentication的标记.作为一个相当新的Ruby,我认为有一种比迭代数
鉴于
JSON响应:
{ "tags": [ { "id": 81499,"name": "sign-in" },{ "id": 81500,"name": "user" },{ "id": 81501,"name": "authentication" } ] } 使用RSpec 2,我想验证此响应是否包含名称为authentication的标记.作为一个相当新的Ruby,我认为有一种比迭代数组和使用include检查名称的每个值更有效的方法?或地图/收集.我可以简单地使用正则表达式来检查/ authentication / i,但这似乎也不是最好的方法. 到目前为止这是我的规范: it "allows filtering" do response = @client.story(15404) #response.tags. end 解决方法
因此,如果
t = JSON.parse '{ ... }' 然后这个表达式将返回nil,这是false,或者它将返回它检测到的东西,它的布尔值为true. t['tags'].detect { |e| e['name'] == 'authentication' } 如果没有标记键,这将引发NoMethodError.我认为在测试中处理得很好,但你可以安排这个案例也显示为false(即nil): t['tags'].to_a.detect { |e| e['name'] == 'authentication' } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |