JSON紹介

JSON vector logo.svg

What’s JSON

JSON, short for JavaScript Object Notation, is an open-standard file format that uses human-readable text to transmit data objects, used as a replacement for XML in some AJAX-style systems.

-- Wikipedia

軽量なデータ記述言語の1つである。構文はJavaScriptにおけるオブジェクトの表記法をベースとしているが、JSONはJavaScript専用のデータ形式では決してなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるよう設計されている。

以前,インターネットに渡ってデータを受け渡しする際によく使われた記述言語はXMLである.しかし,XMLの構文構造が複雑であり,軽量化したJSONの時代が来た.

JSONの文字コードはUTF-8となることで,どのプラットフォームでもちゃんと動かせるメリットもある.

JSONの文法規則

  1. データ構造:名前/値 のペア構造.両者が一対一でコロン「:」で区切る
  2. データの間いにカンマ 「,」 で区切る.
  3. オブジェクトは中括弧「{}」で囲む
  4. 配列は大括弧(ブラケット)「[]」で囲む
  5. 文字列はダブルクォーテーション「""」で囲む

データの書き方例

{
    "name" : "Jason",
    "age" : 18,
    "marriage" : false,

    "nickname" : [  // 文字列配列
        "アイウエオ",
        "qwert",
        "测试用文字列" // 最後にカンマが要らない
    ],

    "bookList": [  // オブジェクト配列
        {"title" : "Pride and Prejudice",   "price" : 20},
        {"title" : "History of the America",   "price" : 40}
    ]        
}

PythonでのJSON利用

Pythonでは,JSON利用のためのpackageがある URL

1
import json
関数 紹介
json.dumps PythonオブジェクトをJSON文字列に変換
json.loads JSON文字列をPythonオブジェクトに変換

json.dumpsの例

文法:

1
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

使用例:

1
2
3
4
5
6
7
8
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = json.dumps(data)
print (json)

print (json.dumps({'a': 'lakjf', 'b': 6}, sort_keys=True, indent=4, separators=(',', ': ')))

上記コードの実行結果は:

1
2
3
4
5
[{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}]
{
    "a": "lakjf",
    "b": 6
}

json.loadsの例

文法:

1
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

使用例:

1
2
3
4
5
6
import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = json.loads(jsonData)
print (text)

上記コードの実行結果は:

1
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

補足

PythonでのJSON利用について,demjsonというサードパーティ製のpackageがある.公式サイトは http://deron.meranda.us/python/demjson/

Quick example (code) via Official Site

1
2
3
4
5
6
7
8
9
>>> import demjson

>>> demjson.encode( ['one',42,True,None] )    # From Python to JSON
'["one",42,true,null]'

>>> demjson.decode( '["one",42,true,null]' )  # From JSON to Python
['one', 42, True, None]

>>> cfg = demjson.decode_file( "config.json" )  # Read JSON from a file