in redash/query_runner/json_ds.py [0:0]
def parse_json(data, path, fields):
data = _normalize_json(data, path)
rows = []
columns = []
for row in data:
parsed_row = {}
for key in row:
if isinstance(row[key], dict):
for inner_key in row[key]:
column_name = "{}.{}".format(key, inner_key)
if fields and key not in fields and column_name not in fields:
continue
value = row[key][inner_key]
add_column(columns, column_name, _get_type(value))
parsed_row[column_name] = value
else:
if fields and key not in fields:
continue
value = row[key]
add_column(columns, key, _get_type(value))
parsed_row[key] = row[key]
rows.append(parsed_row)
columns = _sort_columns_with_fields(columns, fields)
return {"rows": rows, "columns": columns}