访问json密钥关联值

时间:2017-07-27 16:21:16

标签: json ruby

这是我的json文件,我想要检索列表下的密钥title中的值。即LiveHealthOneMedicalvisit guardian

    {
  "data": {
    "perksAndWellBeing": [
      {
        "title": "Physical Wellbeing",
        "perks": [
          {
            "id": "a3N33000EAO",
            "logo": "https:933000001P3v1AAC-1.png",
            "logoLarge": "https:\33000001P3v6AAC-1.png",
            "title": "LiveHealth Online",

          },
          {
            "id": "a3N3300AO",
            "logo": "https:\/\-attachments\/06933000001P3uwAAC-1.png",
            "logoLarge": "https:/hments\/06933000001P3umAAC-1.png",
            "title": "One Medical",

          },
          {
            "id": "a3N3300EA4",
            "logo": "https:\/\/s33000001P3vQAAS-1.png",
            "logoLarge": "https:\/06933000001P3vVAAS-1.png",
            "title": "Access To Top Specialists",

          }
        ]
      },
      {
        "title": "Emotional Wellbeing",
        "perks": [
          {
            "id": null,
            "logo": "https:\/\/s00001P3vpAAC-1.png",
            "logoLarge": "https:\/\/attachmeOAAS-1.png",
            "title": "Visit Guardian EAP",

          }
        ]
      },
      {
        "title": "Financial Wellbeing",
        "perks": [
          {
            "id": "a3N3300HEA4",
            "logo": "https:\/\/sg",
            "logoLarge": "https:\/SAAS-1.png",
            "title": "Track your finances and get free access to financial advice",

          },
          {
            "id": "a3N33000EA4",
            "logo": "https:\/\/s",
            "logoLarge": "https:\/\/",
            "title": "Better student loan refinancing, mortgages, and personal loans",

          }
        ]
      },
      {
        "title": "Perks",
        "perks": [
          {
            "id": "a3N3300LxEAO",
            "logo": "https:\/\",
            "logoLarge": "https:\/,
            "title": "Anthem Programs",

          },
          {
            "id": "a3N3300000EA4",
            "logo": "https:\",
            "logoLarge": "https:\",
            "title": "Receive gym discounts, travel discounts, and more",

          }
        ]
      }
    ]
  }
}

目前,我可以检索价值为Physical wellbeingEmotional wellbeing的标题,但我无法访问列表中的值。

perkswellbeing = JSON.parse(perks)
  #puts perkswellbeing
  puts "*********************"
  g = JSON.parse(perks)
  result1 = g["data"]["perksAndWellBeing"].select {|g1| g1['title']}
  result1.each do |rest1|
    $perks = rest1['title']
    puts $perks

不确定我错过了什么!有谁可以帮帮我。

1 个答案:

答案 0 :(得分:1)

json = JSON.parse(perks)
perksAWB = json["data"]["perksAndWellBeing"] # array

perks = perksAWB.map do |pawb|
  pawb["perks"].map { |p| p["title"] } 
end # array of titles

puts perks.inspect  # printing, or:

要打印没有括号的所有内容,请使用flatten

perks.flatten.each(&method(:puts))