mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages
※2018年9月15日より非力な環境でサーバを運用しているため、各ページの表示に時間がかかる場合があります。ご了承ください。(改良の予定あり)

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - JSON データ読み込み!

[ pc_tips ] [ JSON, Linux ]

こんばんは。

Linux コンソールもしくはシェルスクリプト内で JSON データを読み込む方法についての記録です。

0. 前提条件

  • LMDE 3 (Linux Mint Debian Edition 3; 64bit) での作業を想定。
  • JSON データのパースには jq コマンドを使用する。

1. jq のインストール

jq コマンドを使用するので、未インストールならインストールする。

1
$ sudo apt install jq

2. JSON データの準備

試験的に使用する JSON データは以下のとおり。

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 要素の取得

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
33
$ 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 配下の要素の取得

1
2
3
4
5
6
7
8
$ 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 配列要素の取得

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
$ 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 配列内の特定要素の取得

1
2
3
4
5
$ jq ".data[1].utc" data.json
"2018-07-08 15:00:10"

$ jq ".data[2].latitude" data.json
45.771569721128415

4. 参考サイト


以上。

Comments