Python : json モジュールで json 読み込み

phiary に引っ越しました. 毎日プログラミングやWebに関する情報を発信しています! RSS 登録してたまに覗いたり, tweet やハテブして拡散してもらえると幸いです.

Pocket

JSON (JavaScript Object Notation) は非常に便利. もともと JavaScript 用に作られたデータ形式ですが, 最近は他の言語でもちらほらサポートされています. Python では読み込むだけでそのまま Python 内のオブジェクトと同じように使えるので データ記述の主流である xml よりも使いやすかったりします.

Python の json モジュールを読み込むだけで簡単に使えるので, よかったら使ってみてください. サンプル載せておきます.

SAMPLE

読み込むデータ(sample.json)

json の構文チェックはこちらのサイトが便利です.

[

    {
        "name":"C",
        "appearedIn":1973,
        "influencedBy":["B", "ALGOL", "Assembly", "Pascal"]
    },
    
    {
        "name":"C++",
        "appearedIn":1980
    },
    
    {
        "name":"Python",
        "appearedIn":1990
    },
    
    {
        "name":"Java",
        "appearedIn":1995
    },
    
    {
        "name":"JavaScript",
        "appearedIn":1995
    },
    
    {
        "name":"C#",
        "appearedIn":2000
    }
    
]
    

Python Code

# coding: utf-8
# json モジュールを使ってみる

# json モジュールをインポート
import json

# jsonファイルを読み込む
f = open("sample.json")
# jsonデータを読み込んだファイルオブジェクトからPythonデータを作成
data = json.load(f)
# ファイルを閉じる
f.close()

# 普通に表示
print("普通に表示")
print(data)

# キレイに表示
print("キレイに表示")
print(json.dumps(data, sort_keys=True, indent=4))

# 中身に直接アクセス
print("中身に直接アクセス")
print(data[0]["name"])
print(data[0]["appearedIn"])
print( "Name : {obj[name]}, appearedIn : {obj[appearedIn]}".format(obj = data[0]) )
print( "influencedBy", ", ".join(data[0]["influencedBy"]) )


""" 実行結果
普通に表示
[{'influencedBy': ['B', 'ALGOL', 'Assembly', 'Pascal'], 'name': 'C', 'appearedIn': 1973}, {'name': 'C++', 'appearedIn': 1980}, {'name': 'Python', 'appearedIn': 1990}, {'name': 'Java', 'appearedIn': 1995}, {'name': 'JavaScript', 'appearedIn': 1995}, {'name': 'C#', 'appearedIn': 2000}]
キレイに表示
[
    {
        "appearedIn": 1973, 
        "influencedBy": [
            "B", 
            "ALGOL", 
            "Assembly", 
            "Pascal"
        ], 
        "name": "C"
    }, 
    {
        "appearedIn": 1980, 
        "name": "C++"
    }, 
    {
        "appearedIn": 1990, 
        "name": "Python"
    }, 
    {
        "appearedIn": 1995, 
        "name": "Java"
    }, 
    {
        "appearedIn": 1995, 
        "name": "JavaScript"
    }, 
    {
        "appearedIn": 2000, 
        "name": "C#"
    }
]
中身に直接アクセス
C
1973
Name : C, appearedIn : 1973
influencedBy B, ALGOL, Assembly, Pascal
"""
    

TRACK BACK URL

POST COMMENT

メールアドレスが公開されることはありません。

COMMENT