7

Google Refineを使用して、DataScienceToolkitのcoordinates2politicsAPIの結果から特定の要素を抽出しようとしています。

これがサンプルセル#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構文を使用してこの列に基づく列を追加し、郡のDaneを引き出しました。

value.parseJson()[0]["politics"][1]["name"]

しかし、サンプルセル#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を並べ替えたり、構文を表現したりする方法はありますか?

アップデート

これが、位置だけでなく名前でJSON文字列内の要素を検索できるようにする魔法のGRELです。

filter(value.parseJson()[0]["politics"], item, item["type"]=="admin6")[0]["name"]
4

1 に答える 1

6

名前の付いたフィールドpoliticsは配列であり、次のように返されます。

value.parseJson()[0]["politics"]

その配列の1つの要素は、郡に関連付けられています(friendly_typeフィールドが「郡」である要素です)。したがって、次のように、フィールドをフィルタリングして、郡でpoliticsあるフィールドを見つける必要があります。friendly_type

filter(value.parseJson()[0]["politics"], item, item["friendly_type"]=="county")

これにより、1つの要素を持つ配列が返されます。nameその1つの要素からフィールドを取得したいのでname、0番目の配列要素のを抽出して、完全な式を作成する必要があります。

filter(value.parseJson()[0]["politics"], item, item["friendly_type"]=="county")[0]["name"]
于 2012-04-25T14:38:25.193 に答える