Linux - JSON データ読み込み!
Updated:
Linux コンソールもしくはシェルスクリプト内で JSON データを読み込む方法についての記録です。
0. 前提条件
- LMDE 3 (Linux Mint Debian Edition 3; 64bit) での作業を想定。
- JSON データのパースには
jq
コマンドを使用する。
1. jq のインストール
jq
コマンドを使用するので、未インストールならインストールする。
$ sudo apt install jq
2. JSON データの準備
試験的に使用する JSON データは以下のとおり。
File: data.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"tle1": "1 25544U 98067A 18188.26312658 .00016717 00000-0 10270-3 0 9141",
"tle2": "2 25544 51.6379 278.6474 0004044 282.4015 77.6685 15.54073795 41634",
"counts": 17280,
"data": [
{
"jst": "2018-07-09 00:00:00",
"utc": "2018-07-08 15:00:00",
"latitude": 45.16176011227743,
"longitude": 172.66952944822847,
"height": 411.35546313862784,
"velocity": 7.363739082879173
},
{
"jst": "2018-07-09 00:00:10",
"utc": "2018-07-08 15:00:10",
"latitude": 45.46956221479498,
"longitude": 173.43635569942379,
"height": 411.44566520200857,
"velocity": 7.363617296250599
},
{
"jst": "2018-07-09 00:00:20",
"utc": "2018-07-08 15:00:20",
"latitude": 45.771569721128415,
"longitude": 174.211931842513,
"height": 411.534443519026,
"velocity": 7.363497472928317
},
:
===< 以後、省略 >===
:
3. 使用例
(よくある簡単なもののみ)
3.1 root 要素の取得
$ jq "." data.json
{
"tle1": "1 25544U 98067A 18188.26312658 .00016717 00000-0 10270-3 0 9141",
"tle2": "2 25544 51.6379 278.6474 0004044 282.4015 77.6685 15.54073795 41634",
"counts": 17280,
"data": [
{
"jst": "2018-07-09 00:00:00",
"utc": "2018-07-08 15:00:00",
"latitude": 45.16176011227743,
"longitude": 172.66952944822847,
"height": 411.35546313862784,
"velocity": 7.363739082879173
},
{
"jst": "2018-07-09 00:00:10",
"utc": "2018-07-08 15:00:10",
"latitude": 45.46956221479498,
"longitude": 173.43635569942379,
"height": 411.44566520200857,
"velocity": 7.363617296250599
},
{
"jst": "2018-07-09 00:00:20",
"utc": "2018-07-08 15:00:20",
"latitude": 45.771569721128415,
"longitude": 174.211931842513,
"height": 411.534443519026,
"velocity": 7.363497472928317
},
:
===< 以後、省略 >===
:
3.2 root 配下の要素の取得
$ jq ".tle1" data.json
"1 25544U 98067A 18188.26312658 .00016717 00000-0 10270-3 0 9141"
$ jq ".tle2" data.json
"2 25544 51.6379 278.6474 0004044 282.4015 77.6685 15.54073795 41634"
$ jq ".counts" data.json
17280
3.3 配列要素の取得
$ jq ".data[]" data.json
{
"jst": "2018-07-09 00:00:00",
"utc": "2018-07-08 15:00:00",
"latitude": 45.16176011227743,
"longitude": 172.66952944822847,
"height": 411.35546313862784,
"velocity": 7.363739082879173
}
{
"jst": "2018-07-09 00:00:10",
"utc": "2018-07-08 15:00:10",
"latitude": 45.46956221479498,
"longitude": 173.43635569942379,
"height": 411.44566520200857,
"velocity": 7.363617296250599
}
{
"jst": "2018-07-09 00:00:20",
"utc": "2018-07-08 15:00:20",
"latitude": 45.771569721128415,
"longitude": 174.211931842513,
"height": 411.534443519026,
"velocity": 7.363497472928317
},
:
===< 以後、省略 >===
:
3.4 配列内の特定要素の取得
$ jq ".data[1].utc" data.json
"2018-07-08 15:00:10"
$ jq ".data[2].latitude" data.json
45.771569721128415
4. 参考サイト
以上。
Comments