【问题标题】:Rails how to extract data from nested JSON dataRails 如何从嵌套的 JSON 数据中提取数据
【发布时间】:2021-10-01 11:10:34
【问题描述】:

我试图从这个嵌套的 JSON 数据中解析出我需要的值。我需要从quotas 获取是responders,我需要从qualified 获取是service_idcodes

我首先尝试只获取quotas,但一直收到此错误[]': no implicit conversion of String into Integer

      hash = JSON::parse(response.body)
       hash.each do |data|
         p data["quotas"]
       end

Json 数据

{
  "id": 14706,
  "relationships" : [
    {
      "id": 538
    }
  ]
  "quotas": [
    {
      "id": 48894,
      "name": "Test",
      "responders": 6,
      "qualified": [
        {
          "service_id": 12,
          "codes": [
            1,
            2,
            3,
            6,
          ]
        },
        {
          "service_id": 23,
          "pre_codes": [
            1,
            2
          ]
        }
      ]
    }
  ]
}

【问题讨论】:

    标签: arrays json ruby hash


    【解决方案1】:

    我需要将您的示例转换为 json。然后我可以循环配额并输出值。

    hash = JSON::parse(data.to_json)
    hash['quotas'].each do |data|
      p data["responders"]
      data["qualified"].each do |responder|
        p responder['service_id']
        p responder['codes']
      end
    end
    

    数据变量中的哈希(示例代码工作所需):

    require "json"
    
    data = {
      "id": 14706,
      "relationships": [
        {
          "id": 538
        }
      ],
      "quotas": [
        {
          "id": 48894,
          "name": "Test",
          "responders": 6,
          "qualified": [
            {
              "service_id": 12,
              "codes": [
                1,
                2,
                3,
                6,
              ]
            },
            {
              "service_id": 23,
              "pre_codes": [
                1,
                2
              ]
            }
          ]
        }
      ]
    }       
    

    【讨论】:

    • 是的,它应该是 JSON。我正在解析我的 api 调用的响应。我正在做JSON::parse(response.body),我得到了上面列出的输出
    • 更新了我的答案,解释了为什么我在测试变量中使用了 to_json。
    • 我现在明白了,但你能解释一下为什么.to_jsonJSON::parse(response.body) 的输出不同
    • 我认为您使用hash.each do |data| 循环了生成的json,但配额在hash['quotas'] 中,这里不需要循环。
    • 我需要 to_json 来隐藏哈希,因为由于无法访问 api,我没有 json 结果
    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2022-07-12
    相关资源
    最近更新 更多