600記事目である。
Goは前回分でインストールしたので、今度はGitである。
Git for Windowsでもよかったのだが、GUIで使うこともあるかもしれないのでGit Extensionsにした。
- 作者: 岡本隆史,武田健太郎,相良幸範
- 出版社/メーカー: 技術評論社
- 発売日: 2012/07/10
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 103回
- この商品を含むブログ (25件) を見る
Git Extentionsのダウンロード
からダウンロードページ
http://sourceforge.net/projects/gitextensions/
に行き、緑のダウンロードアイコンをクリックする。
今回は GitExtensions-2.48.03-SetupComplete.msi であった。
Git Extensionsのインストール
Git Extensionsのmsiファイルをクリックすると、ダイアログが立ち上がる。[Next]をクリックする。
「Install for all users this machine」が選択されているので、そのまま[Next]をクリックする。
全てにチェックを入れ、[Next]をクリックする。
そのまま[Next]をクリックする。
そのまま[Next]をクリックする。
そのまま[Next]をクリックする。
[Install]をクリックする。
UACが動くので[はい]をクリックするとセットアップが進む。
KDiff3のセットアップウィザードがGir Extensionsダイアログの上に表示される。[同意する(A)]をクリックする。
[次へ (N) >]をクリックする。
[次へ (N) >]をクリックする。
[次へ (N) >]をクリックする。
[インストール]をクリックする。
[完了(F)]をクリックする。KDiffセットアップはこれで終了。
Git for Windowsのインストールに切り替わる。[ Next > ]をクリックする。
[ Next > ]をクリックする。
[ Next > ]をクリックする。
[ Next > ]をクリックする。
[ Next > ]をクリックする。
「Use Git from the Windows Command Prompt」を選び、[ Next > ]をクリックする。
[ Next > ]をクリックする。
インストール中。
[ Finish ]をクリックすることでGit for Windowsのインストール終了。
チェックリストが表示されるので、設定が必要なものがあれば設定を済ませる。[OK]でこの設定ウィザードは終了する。
[Finish]をクリックして、Git Extensionsのセットアップウィザードを終了する。
json2csvをインストールする
Go言語とGitの準備ができたのでjson2csvをインストールする。参考にしたのは下記のサイト。下記ではjson2csvをLinuxで動作させている。
jsonをcsvに変換する「json2csv」 - brainstormを参照するとインストールは、
go get github.com/jehiah/json2csv
なので、 コマンドプロンプトから実行する。エラーが出ずに終了したら、(前回作業で設定済の)%GOPATH%\binにインストールされていることを確認する。
json2csvがインストールされていて、PATHの環境変数設定に%GOPATH%\binが追加されていれば、下記のようにjson2csvのヘルプを表示を表示できる。
階層構造のJSONのCSV化
今回ターゲットのJSONは階層構造である。json2csvは-kパラメタにデータ項目名(上のヘルプではfieldsと表記されている)を与えると、その項目に合致するデータをCSVに吐き出す。
最上位あるいは階層構造を持たないJSONの場合は、データ項目名をそのまま書けばよいのだが、階層構造の場合はデータ項目名を修飾して記載する。
JSONLint - The JSON Validator.でデータを1件見てみる。本物のデータなので都合によりマスキングしている。階層構造になっていることが分かる。
拡大してみる。
meta_dataの下にcountry_typeやtldがある。reportの下にはadditional_dataさらにその下の3階層目にはexploitがある。reportには2階層のsrc_mode、timestampなどもある。
今回はミスなくコマンド・パラメタ入力をするため、バッチファイル化した。json2csvは複数行に表示されているが、実際には1行で作成している。
-iで入力ファイル、-oに出力ファイル、stderrに出力されるjson2csvのエラーメッセージ( 2> )は適当に名前を付けてテキストファイル化している。-pに-kと同じ内容を指定すると1行目にデータ項目名を出力してくれる。
echo on json2csv.exe -i なんちゃら.json -o なんちゃら.csv -k meta_data.country_code,meta_data.tld,report.additional_data.exploit,report.src_mode,report.timestamp -p meta_data.country_code,meta_data.tld,report.additional_data.exploit,report.src_mode,report.timestamp 2> ほにゃららerr.txt
抽出するデータは下記の通りである。
meta_data.country_code
meta_data.tld
report.additional_data.exploit
report.src_mode
report.timestamp
結果は、このように
このように抽出したいデータ項目名を
最上位のデータ項目名[.2階層目のデータ項目名] [.3階層目のデータ項目名][…]
とすれば、json2csvは階層構造のJSONでも正しく読み出してくれる。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (180件) を見る
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
- 作者: Douglas Crockford,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/22
- メディア: 大型本
- 購入: 94人 クリック: 1,643回
- この商品を含むブログ (187件) を見る
まとめ
今回はほんの数行成形するJavaScriptを書いただけで、JSONをCSV化できた。Go言語はともかく、Gitについては通常使わないのであればアンインストールして構わない。