タイトルに書いただけでも間抜けな匂いがするが、そんなことをしたいなーというシチュエーションがあった。
特別素晴らしい技術というわけでもないし、ニーズがないからなのか、それほど難しくないからなのかはわからないが、ググってもほど良いものがなかったため、そのようなものを作成したのでした。
やりたいことをおおまかに整理すると、次のとおり。
- あるネストや配列などなどいろいろ詰め込まれているJSONファイルがある。実際は1ファイルではなく、それなりの件数。
- このファイルからあるプロパティをいくつかピックアップして、それをCSV形式で出力したい。
- ピックアップしたい項目はいくつかのパターンを試してみたいため、設定ファイルなどで外だしにしておきたい。
- 設定ファイルは、CSVに出力したいJSONのプロパティ名を「parent.child.grandchild」のように、上の階層からのドット区切りで指定する方式。
最初は、例えばrubyで、ハッシュに取り込んだJSONをpメソッドでプリティに出力できるなら、設定ファイルさえもいらないレベルではと思っていた。 なんだけどシンタックスのアヤで思いの他、そのままでは都合がつかないところが分かってきた。
ということで、JSONファイルがインプットになっているハッシュのプロパティに「parent.child.grandchild」のようなオレオレ(といってもJavaScript風ではある)形式の文字列を指定すると、その値を取得できるようなメソッドを作成。
FlatkeyHashProviderというやつの、#get_json_value_onちうのがミソである。
今思えば、rubyが全く読めない人に使ってもらうものでもないから、いっそのことハッシュにアクセスするrubyのスニペットの文字列を変数にならべておき、evalメソッドを使う方式でも良かったかもしれない。 まあ、でもそれはそれでどこで「[」「]」を付けるかとかダブルクォートとかめんどくさいから、まあ今回の方はそれはそれで意味があったと思うことにする。