JSONのwalk
JSONファイルがいくつかあって、それらはスキーマは違っても取得したいキー名は固定であるなんてことがあるかもしれない。 そのときにJSONファイルのスキーマの違いを無視して特定キー名のプロパティを取得するようなことをしたいときに次のようなコード(Python)を利用すれば取得できる。
import json def walk_json(key, jo): # 配列が来た場合はその配列の各要素の中身を探る if type(jo) is list: return sum( list( map(walk_json, jo) ) ) # JSONは `true` のみでも立派にJSONとして成り立ってしまうので、 # `jo` がオブジェクト出ない場合は探したいキー名をプロパティには # 持っていない(そもそもプロパティを持ってない)のだから空リストを返す if type(jo) is not dict: return [] # ここまで来るとJSONオブジェクトしかここにきていないはず if key in jo: # JSONオブジェクト内に欲しいキーがあればそれを返す return [jo[key]] # JSONオブジェクト内に欲しいキーがなればプロパティの中をさらに探索 return sum( map( walk_json, filter( # JSONオブジェクトか配列以外はキーをプロパティに持つようなことはないため、 # 探索する必要はない lambda jo: type(jo) is dict or type(jo) list, jo.values() ), [] )