def str = '''{
    "ontologyName": "Procedure",
    "linkedResources": [{
            "tableName": "ProcedureTable1",
            "columns": [
                "columnAA",
                "columnBB",
                "columnCC"
            ]
        },
        {
            "tableName": "ProcedureTable2",
            "columns": [
                "columnAA",
                "columnBB"
            ]
        },
        {
            "tableName": "ProcedureTable3",
            "columns": [
                "columnAA"
            ]
        }
    ]
}'''

def json = new groovy.json.JsonSlurper().parseText(str)
def data = json.linkedResources.inject([]) { list, table -> list << table.columns.collect { ['table': table.tableName, 'column': it]}; list.flatten() }
data.each {
  println "${it.table}, ${it.column}"
}