加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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' }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读