Мне нужно получить все значения ключей «name» и в то же время получить значения «дочерних» ключей. Я могу получить только «имена» с первого уровня, но застрял с «детьми», так как не все «имена» имеют их.Как я могу получить конкретные значения ключей от json?
puts data['labels'].collect { |item| item['name'] }
JSON ответ следующее:
{"labels": [{
"name": "Crime"
}, {
"name": "Demonstrations"
}, {
"name": "Music",
"children": [{
"name": "Awards"
}, {
"name": "Classical"
}, {
"name": "Country"
}, {
"name": "Other"
}, {
"name": "Pop"
}, {
"name": "Soul"
}, {
"name": "X Factor"
}]
}, {
"name": "Politics"
}, {
"name": "Rescue"
}, {
"name": "Special Events"
}, {
"name": "Sports",
"children": [{
"name": "Auto Racing"
}, {
"name": "Awards"
}, {
"name": "Baseball"
}, {
"name": "Basketball"
}, {
"name": "NASCAR (Cup)"
}, {
"name": "NASCAR (Nationwide)"
}, {
"name": "NASCAR (Truck)"
}, {
"name": "NASCAR (XFINITY)"
}, {
"name": "Other"
}, {
"name": "Rodeo"
}, {
"name": "Rugby"
}, {
"name": "Running"
}, {
"name": "Sailing"
}, {
"name": "Skating"
}, {
"name": "Volleyball"
}]
}, {
"name": "Traffic"
}, {
"name": "Weather"
}]}
Andrey, p data ['labels']. Collect {| item | item ['name']} не вызывает ошибки для меня, он просто захватывает значения всех «имя», но игнорирует «имя», которые связаны с «детьми». Я на рубине 2.1.2, и безопасный оператор навигации в моем случае не поддерживается ((( –
@DenisS. Я отредактировал answr –
Спасибо, Андрей! Именно это я и пытался получить! –