Skip to content

json#

json --- JSON エンコーダおよびデコーダ

python でjson ファイルを扱うには標準モジュールの json を使用

import json

loads()#

JSON形式の文字列を辞書として読み込むにはjson.loads()関数を使用。

text = """
{
    "hostnames":["Router1","Router2","Router3"],
    "interfaces":["Gi0/0/0/0","Gi0/0/0/1","Gi0/0/0/2"],
    "location":[
        {"Japan":"Tokyo"},
        {"USA":"NewYork"}
    ]
}
"""

data = json.loads(text)
print(data)
print(type(data))

load()#

JSONファイルを辞書として読み込むにはjson.load()を使用する。

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)
print(data)
print(type(data))

dumps()#

辞書をJSON形式の文字列(str)として出力するにはjson.dumps()を使用。

import json
data = {
    "hostnames":[
        "Router1",
        "Router2",
        "Router3"
        ],
    "interfaces":[
        "Gi0/0/0/0",
        "Gi0/0/0/1",
        "Gi0/0/0/2"
        ],
    "location":[
        {"Japan":"Tokyo"},
        {"USA":"Newyork"}
        ]
    }


json_data = json.dumps(data, indent=4)
print(json_data)

dump()#

辞書をJSONファイルとして保存するには json.dump() を使用。

import json

data = {
    "hostnames":[
        "Router1",
        "Router2",
        "Router3"
        ],
    "interfaces":[
        "Gi0/0/0/0",
        "Gi0/0/0/1",
        "Gi0/0/0/2"
        ],
    "location":[
        {"Japan":"Tokyo"},
        {"USA":"Newyork"}
        ]
    }


with open('sample.json', 'w') as f:
    json.dump(data, f, indent=4)

memo

json.dump() に引数indent (文字数) を渡すと要素数ごとに改行・インデントされる

複雑なJSON#