Я пытаюсь извлечь определенные элементы из результатов из API-интерфейс координат2политики Data Science Toolkit с использованием Google Refine
Вот образец ячейки #1:
[{"politics":[
{"type":"admin2","friendly_type":"country","code":"usa","name":"United States"},
{"type":"admin6","friendly_type":"county","code":"55_025","name":"Dane"},
{"type":"constituency","friendly_type":"constituency","code":"55_02","name":"Second district, WI"},
{"type":"admin5","friendly_type":"city","code":"55_48000","name":"Madison"},
{"type":"admin5","friendly_type":"city","code":"55_53675","name":"Monona"},
{"type":"admin4","friendly_type":"state","code":"us55","name":"Wisconsin"},
{"type":"neighborhood","friendly_type":"neighborhood","code":"Eastmorland|Madison|WI","name":"Eastmorland"}
],"location":{"longitude":"-89.3259404","latitude":"43.0859191"}}]
Я добавил столбец на основе этого столбца, используя этот синтаксис GREL, чтобы получить округ, Дейн:
value.parseJson()[0]["politics"][1]["name"]
Но когда я добрался до Sample Cell #2, синтаксис больше не работает, потому что результат JSON немного отличается:
[{"politics":[
{"type":"admin2","friendly_type":"country","code":"usa","name":"United States"},
{"type":"constituency","friendly_type":"constituency","code":"55_05","name":"Fifth district, WI"},
{"type":"admin4","friendly_type":"state","code":"us55","name":"Wisconsin"},
{"type":"admin6","friendly_type":"county","code":"55_079","name":"Milwaukee"},
{"type":"admin5","friendly_type":"city","code":"55_84675","name":"Wauwatosa"},
{"type":"constituency","friendly_type":"constituency","code":"55_04","name":"Fourth district, WI"}
],"location":{"longitude":"-88.0075875","latitude":"43.0494572"}}]
Есть ли способ отсортировать JSON или сформулировать мой синтаксис, чтобы я мог найти округ в любом случае?
Вот волшебный GREL, который позволил мне найти элементы в строке JSON по имени, а не только по позиции:
filter(value.parseJson()[0]["politics"], item, item["type"]=="admin6")[0]["name"]