さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

Python入門 JSONを扱ってみよう

f:id:y_saiki:20171024233602j:plain

目次

1.実行環境

  • MacOS Sierra 10.12.16
  • Python2.7.13

2.JSONとは

JSONはJavaScript Object Notationの略でJavaScriptのデータ構造形式のことを指します。
JSON形式は現在では一番ポピュラーなデータ構造です。
現在ではどの言語でもJSONパーサーのライブラリがあるので、JSON形式で受け取ったデータを自身のプログラムで扱えるデータ構造に変換して使用したりすることができます。

3.JSONをエンコードしてみる

エンコードはPythonのデータ構造をJSON形式に変換します。

3-1.サンプルコード

json_util.py

    #_*_ coding: utf-8 _*_

    
    import json

    
    def encode(dic):

        return json.dumps(dic, indent=4)

main.py

    #_*_ coding: utf-8 _*_

    
    import json_util

    
    if __name__ == "__main__":

        dic_data = {"test1" : {"name" : "ichiro", "age" : "30", "hobby" : ("hobby1", "hobby2")}, "test2" : {"name" : "jiro", "age" : "29", "hobby" : ("hobby3", "hobby4")}}

        json_data = json_util.encode(dic_data)

        print json_data

※ 6行目のhobby部分のデータ形式は実用的にするのであればリスト形式にしたほうが良いかと思いますが、今回はその部分がJSONに変換されたときに[]に変わっていることを確認したいため、敢えてタプル形式にしております。

3-2.実行結果

{

    "test1": {

        "hobby": [

            "hobby1",

            "hobby2"

        ],

        "age": "30",

        "name": "ichiro"

    },

    "test2": {

        "hobby": [

            "hobby3",

            "hobby4"

        ],

        "age": "29",

        "name": "jiro"

    }

}

4.JSONをデコードしてみる

デコードはJSON形式をPythonのデータ構造に変換します。

4-1.サンプルコード

json_util.py

    #_*_ coding: utf-8 _*_

    
    import json

    
    def encode(dic):

        return json.dumps(dic, indent=4)

    
    def decode(json_data):

        return json.loads(json_data)

~

main.py

    #_*_ coding: utf-8 _*_

    
    import json_util

    
    if __name__ == "__main__":

        data = {"test1" : {"name" : "ichiro", "age" : "30", "hobby" : ("hobby1", "hobby2")}, "test2" : {"name" : "jiro", "age" : "29", "hobby" : ("hobby3", "hobby4")}}

        json_data = json_util.encode(data)
    
        print json_data
    
        py_data = json_util.decode(json_data)

        print py_data

4-2.実行結果

{

    "test1": {

        "hobby": [

            "hobby1",

            "hobby2"

        ],

        "age": "30",

        "name": "ichiro"

    },

    "test2": {

        "hobby": [

            "hobby3",

            "hobby4"

        ],

        "age": "29",

        "name": "jiro"

    }

}

{u'test1': {u'hobby': [u'hobby1', u'hobby2'], u'age': u'30', u'name': u'ichiro'}, u'test2': {u'hobby': [u'hobby3', u'hobby4'], u'age': u'29', u'name': u'jiro'}}

5.最後に

以上でPythonのデータ形式からJSON形式データへ、JSON形式のデータからPythonのデータ形式への変換を行ってみました。
WebAPI開発など他システムとHTTPで通信するシステムなどではデータのやり取りをJSONで行うことが多いと思いますので、 こうしたライブラリを使用しての変換は多いかと思います。
今回のサンプルコードは実践的ではありませんが、何かの参考になればよいと思います。

以上