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. 参考サイト


以上。





 

Sponsored Link

 

Comments