プログラミング Tips

ITエンジニアの雑記ブログ。
IT関連ニュースの考察や、プログラミングに関するTipsの備忘録として…
育児や日常の雑記帳としても、記事を投稿していきます。

プログラミングと日常生活に関する情報を発信しています。

2018年03月

Python で コマンドラインからJSONフォーマット解析してみた!

前の記事で、JSONフォーマットの解析方法をまとめてみた。

でもこの方法だと毎回Pythonでスクリプトを書かなければならないので面倒…

と思って調べてみたら、コンソールからJSONフォーマトを整形&検証することができるってことがわかったので、記事にしてみた。

環境

今回の実施環境も前回に同じく…

  • MacOSX 10.13.3
  • Python 3.6.1


準備

Virtualenv環境の構築

今回も"virtualenv"環境の上で実施する。準備の手順に関しては、過去の記事にまとめてあるので、参照してほしい。
尚、今回はサードパティのPythonパッケージを使用せず、標準パッケージのみで大丈夫な為、追加パッケージインストールはなし。

コンソールからの使い方

json.tool モジュールという、単純なコマンドラインインターフェイスが存在する。このコマンドラインのオプションは、

  • infile引数
  • outfile引数

がある。未指定の場合は、sys.stdin, sys.stdoutが指定される。

以下に入力サンプルを記載する

# オプション未指定の場合
$ echo '{"json":"sample"}' | python -m json.tool
{
    "json": "sample"
}

# infile オプション指定の場合
# inputfile.jsonファイルにjsonフォーマットの入力しておく
$ python -m json.tool inputfile.json
[
    {
        "test": "sample"
    }
]

# outfile オプション指定の場合
# inputfile.jsonの内容が、outputfile.jsonに整形して出力される
$ python -m json.tool inputfile.json outputfile.json

以上でコマンドラインから簡単に入力できる方法になる。
--sort-keysオプションを用いることで、jsonをパスした結果の地所捨りょくにおいて、キーをアルファベット順に並び替えることができる。



Python で Jsonフォーマットを解析してみた!

前の記事でPythonでXMLをJSONフォーマットに変換する方法をまとめてみた。

今回はアプリでJSONフォーマットデータを活用する為に、パース(解析)する方法。毎回調べ直すので、備忘録のためにまとめた。



環境

今回実施する環境は以下の通り

  • MacOSX 10.13.3
  • Python 3.6.1

準備

Virtualenv環境の構築

今回も"virtualenv"環境の上で実施する。準備の手順に関しては、過去の記事にまとめてあるので、参照してほしい。

尚、今回はサードパティのPythonパッケージを使用せず、標準パッケージのみで大丈夫な為、追加パッケージインストールはなし。

実験用のデータの準備

今回の検索対象のJSONベースのデータは、Google Books APIを用いて本の情報を用いる

以下のリンクから取得できる

# "入門Python3"情報をISBNから取得
https://www.googleapis.com/books/v1/volumes?q=isbn:9784873117386

実際に取得までの方法を以下に記載

import json
import urllib.request

url = 'https://www.googleapis.com/books/v1/volumes?q=isbn:9784873117386'
response = urllib.request.urlopen(url)
# "content"内に結果が格納される
content = json.loads(response.read().decode('utf8'))

JSONフォーマットのパース

準備の中でURLからJSONデータを取得するまでを挙げた。その結果の中身をパースして、意図したデータを取得する方法を以下に記述する

# jsonデータ全てを出力
print(content)

# 1階層入った内容を出力
print(content['items'])

# 'title'キーの内容を出力
print(content['items'][0]['volumeInfo']['title'])

# 'description'キーの内容を出力
print(content['items'][0]['volumeInfo']['description'])


↑このページのトップヘ

-->