テキストデータベースでデータを処理する時に、1行レコードを”,”(カンマ)などのsplit文字で分割して、配列として操作しなければいけなかったが、xmlやjsonなどのkey=valueに対応すると、かなりデータ保存の幅とシステムの簡易構造が行えると思い、
コマンドラインでjsonを扱える「jq」コマンドを調査してみました。
まずはインストール
クライアント端末(開発端末)にMac、サーバーサイド(公開端末)にUbuntuを想定して、各端末にインストール
macにインストール
$ brew install jq
ubuntuにインストール
$ apt-get install jq
CentOSにインストール(おまけ)
$ yum install jq
かなりあっさりインストール完了です。
$ jq —version
#mac
jq—1.4
#ubuntu
jq version 1.2
#CentOS
jq version 1.3
バージョンを確認すると、リポジトリにより差分があるようですが、
気になる方は下記本家サイトよりDLしてインストールしてください。
http://stedolan.github.io/jq/
データを用意
data1.json
{"name": "Abc", "addr": "Tokyo", "num": 10, "arr": ["a","b","c"]}
{"name": "Def", "addr": "Osaka", "num": 20, "arr": ["d","e","f"]}
{"name": "Ghi", "addr": "Nagoya","num": 100,"arr": ["g","h","i"]}
内容に意味はありません。
とりあえず、文字列、数値、配列などを入れ込んでみました。
検証したい方は、色々な型を試してみてください。
jqの簡単な使い方
jqコマンドでどのくらい簡単に値を取り出せるのか簡単なリファレンスをメモります。
基本パターン
$ json [pattern] [file]
# option
pattern : CSSのセレクタのようなもの
file : jsonファイル(複数指定もOK)
内容を全てパースする
$ json ‘.’ ./data1.json
#結果
{
"arr": [
"a",
"b",
"c"
],
"num": 10,
"addr": "Tokyo",
"name": "Abc"
}
{
"arr": [
"d",
"e",
"f"
],
"num": 20,
"addr": "Osaka",
"name": "Def"
}
{
"arr": [
"g",
"h",
"i"
],
"num": 100,
"addr": "Nagoya",
"name": "Ghi"
}
特定のkeyでvalueを取り出す
$ jq '.name' data1.json
"Abc"
"Def"
"Ghi"
配列の取得
$ jq '.arr' data1.json
[
"a",
"b",
"c"
]
[
"d",
"e",
"f"
]
[
"g",
"h",
"i"
]
一括の配列で取得
$ jq '.arr[]' data1.json
"a"
"b"
"c"
"d"
"e"
"f"
"g"
"h"
"i"
0 件のコメント:
コメントを投稿