I need to get all values of 'name' keys and at the same time to get values of 'children' keys. I'm able to retrieve only 'names' from first level but stuck with 'children' since not all 'names' have them.
puts data['labels'].collect { |item| item['name'] }
The JSON response is the following:
{"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"
}]}