JSONとは

JSONとは、「Java Script Object Notation」の略で、JavaScriptというプログラミング言語のオブジェクト表記法をベースに作られたデータフォーマットです。

JSONのメリット

ベースとなった言語は、JavaScriptですが、さまざまなプログラミング言語がこの形式に対応していて、異なるプログラミング言語の間でデータをやり取りしたいときに便利です。
たとえば、Python以外にもJavaScript、PHP、Rubyというようなプログラム言語がこの形式に対応しています。
JSONという形式のデータをひとつ用意しておけば、JavaScriptを使う人、PHPを使う人、Rubyを使う人などに、このデータを渡すだけで、それぞれが共通して処理できるというわけです。
JSON形式のデータであれば、Rubyから受けとったデータをPython で処理することも可能です。
WebAPIのように、サービスを提供する側も、どのようなプログラミング言語でも処理しやすいように、JSON形式でデータを返すことが多いようです。

JSON形式とは

それでは、JSON形式がどのようなデータ構造をしているのか、実際に見てみましょう。
ここでは、オブジェクト形式と配列形式について簡単に説明します。

オブジェクト形式

JSONは、基本的に「キーと値」のペアで成り立っています。
「キーと値」は”キー”: “値”というようにコロン(:)で区切られます。
ペアとペアの間はカンマ(,)で区切られます。全体は{ }で囲まれます。
この{ }を、オブジェクト(形式)と言います。
オブジェクト形式のサンプルを以下に示します。4つのペアが登録されています。

{
	"name": "まつもと”,
	"birthday": "1991-06-15",
	"gender": "male",
	"hobby": "baseball"
}

配列形式

値が複数ある場合、値を角括弧[ ]で囲み、その中にカンマ(,)で区切った複数の値を配列形式で格納します。下記サンプルでは、Sportsの値が、野球、サッカー、テニスの3つとなっています。
配列なので、中身は値だけの構成となっています。

{
	"Sports": [
		"野球",
		"サッカー",
		"テニス"
	]
}

エンコードとデコード

JSON形式に変換したり、逆にJSON形式で記述されたデータフォーマットを自分のプログラミングで使用できる形式に変換する必要があります。
これらの変換処理を、エンコード(JSON形式に変換)、デコード(JSON形式から自分のプログラムで使用できる形式に変換)と呼びます。
Pythonでは、エンコードする場合に、json.dumps()メソッドを使用し、デコードする場合はjson.loads()メソッドを使用します。
Json.dumps():エンコード
生成されたPythonの辞書データをJSON形式にエンコードしてみましょう。

>>> import  json            標準モジュールjsonをインポートします。
>>> cost = {'TV':100, 'camera':200, 'radio':300}  辞書データを作成します。
>>> json.dumps(cost)           エンコードします。
'{"camera": 200, "TV": 100, "radio": 300}'

Json.loads():デコード
JSON形式に変換されたデータフォーマットをデコードしてみましょう。

>>> import  json
>>> cost = {'TV':100, 'camera':200, 'radio':300} 
>>> enc = json.dumps(cost)
>>> print (enc)               エンコードします。
'{"camera": 200, "TV": 100, "radio": 300}'
>>> dec = json.loads(enc)         デーコードします。
>>> print( dec)
{'TV':100, 'camera':200, 'radio':300} 
>>> print (dec['TV'])            辞書データから、データを取り出します。
100

JSON.DUMPSの使用例(サンプルプログラム)

JSON.DUMPSを使用したサンプルプログラムです。参考にしてみてください。
CSV形式のデータ(CSVファイル)を読み込み、JSON形式に変換するプログラムです。
サンプルプログラム1

# coding: utf-8
print("CSV形式のデータをJSON形式に変換します。")
print("---CSVファイル---")
print("P1,P2,P3,P4")
print("1,2,3,4")
print("10,20,30,40")
import csv     
import json
data=[]
with open('file.csv') as f:
 for line in csv.DictReader(f):
  line_json=json.dumps(line)
  data.append(line)
print("    ↓   ")
print("---JSON形式---")
print(data)

実行結果

C:\Python35-32>python csv_read.py
CSV型式のデータをJSON形式に変換します。
---CSVファイル---
P1,P2,P3,P4
1,2,3,4
10,20,30,40
    ↓   
---JSON型式データ---
[{'P4': '4', 'P2': '2', 'P3': '3', 'P1': '1'}, {'P4': '13', 'P2': '11', 'P3': '1
2', 'P1': '10'}]

CSVファイル

P1,P2,P3,P4
1,2,3,4
10,20,30,40

まとめ

Json.Dumps()を使った、データフォーマットのJSON形式へのエンコード操作について、コマンドを実行したときの結果とあわせて解説させていただきました。デコード操作であるJson.Loads()もいっしょに習得しておきましょう。