「Python3」json形式ファイル(文字列)を読み込み・辞書型変換

json json

JSONとはJavaScript Object Notationの略でJavaScriptの書き方に寄せて書いてあるデータファイルのことです。
例として、このような記述になります。

{
    "current" : "2019/10/08",
    "foods" : [
        {
            "name" : "banana",
            "color" : "yellow",
            "kind" : "fruit"
        },
        {
            "name" : "tomato",
            "color" : "red",
            "kind" : "vegetables"
        },
        {
            "name" : "strawberry",
            "color" : "red",
            "kind" : "fruit"
        }
    ]
}

“key”(名前) : “value”(値)になっているのが分かります。[]は配列、{}はオブジェクトになります。
今回は、こちらのjson形式ファイル(文字列)を辞書型に、また辞書型をjson形式ファイル(文字列)に変換していきます。

json形式ファイルを読み込み辞書型へ変換

<ソースコード>
with open("data/test01.json", mode="r") as f:
    dic = json.load(f)
    print(type(dic))
    pprint.pprint(dic)
<出力結果>
<class 'dict'>
{'current': '2019/10/08',
 'foods': [{'color': 'yellow', 'kind': 'fruit', 'name': 'banana'},
           {'color': 'red', 'kind': 'vegetables', 'name': 'tomato'},
           {'color': 'red', 'kind': 'fruit', 'name': 'strawberry'}]}

loadメソッドを使用することで、json形式ファイルを辞書型に変換できます。

json形式文字列を辞書型へ変換

<ソースコード>
j_s = '{\
    "current" : "2019/10/08",\
    "foods" : [\
        {\
            "name" : "banana",\
            "color" : "yellow",\
            "kind" : "fruit"\
        },\
        {\
            "name" : "tomato",\
            "color" : "red",\
            "kind" : "vegetables"\
        },\
        {\
            "name" : "strawberry",\
            "color" : "red",\
            "kind" : "fruit"\
        }\
    ]\
}'
dic = json.loads(j_s)
print(type(dic))
pprint.pprint(dic)
<出力結果>
<class 'dict'>
{'current': '2019/10/08',
 'foods': [{'color': 'yellow', 'kind': 'fruit', 'name': 'banana'},
           {'color': 'red', 'kind': 'vegetables', 'name': 'tomato'},
           {'color': 'red', 'kind': 'fruit', 'name': 'strawberry'}]}

loadsメソッドを使用することで、json形式文字列を辞書型に変換できます。

辞書型をjson形式に変換してファイルへ書き込み

<ソースコード>
dic = {
    'current': '2019/10/08',
    'foods': [
        {
            'name': 'banana', 
            'color': 'yellow', 
            'kind': 'fruit'
        }, 
        {
            'name': 'tomato', 
            'color': 'red', 
            'kind': 'vegetables'
        }, 
        {
            'name': 'strawberry', 
            'color': 'red', 
            'kind': 'fruit'
        }
    ]
}
with open("data/test02.json", mode="w") as f:
    json.dump(dic, f, indent=4)
<出力結果(”data/test02.json”の中身)>
{
    "current": "2019/10/08",
    "foods": [
        {
            "name": "banana",
            "color": "yellow",
            "kind": "fruit"
        },
        {
            "name": "tomato",
            "color": "red",
            "kind": "vegetables"
        },
        {
            "name": "strawberry",
            "color": "red",
            "kind": "fruit"
        }
    ]
}

dumpメソッドを使用することで、辞書型をjson形式に変換してファイルに書き込むことができます。

辞書型をjson形式文字列へ変換

<ソースコード>
dic = {
    'current': '2019/10/08',
    'foods': [
        {
            'name': 'banana', 
            'color': 'yellow', 
            'kind': 'fruit'
        }, 
        {
            'name': 'tomato', 
            'color': 'red', 
            'kind': 'vegetables'
        }, 
        {
            'name': 'strawberry', 
            'color': 'red', 
            'kind': 'fruit'
        }
    ]
}
j = json.dumps(dic, indent=4)
print(type(j))
print(j)
<出力結果>
<class 'str'>
{
    "current": "2019/10/08",
    "foods": [
        {
            "name": "banana",
            "color": "yellow",
            "kind": "fruit"
        },
        {
            "name": "tomato",
            "color": "red",
            "kind": "vegetables"
        },
        {
            "name": "strawberry",
            "color": "red",
            "kind": "fruit"
        }
    ]
}

dumpsメソッドを使用することで、辞書型をjson形式の文字列に変換することができます。

コメント

タイトルとURLをコピーしました