8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonでのJSONの作り方とパースの仕方

Last updated at Posted at 2019-10-10

Pythonに関するJSONの作成の仕方とパースの仕方を書いておこうと思います。
JSONは最近多くのREST APIで使わているので学んでおくと便利でしょう。

##まずはJSONの作成方法から
JSONって作るの億劫になる人が多いです。
意外と簡単に作ることが可能なので覚えておくと良いと思います。

JSON作成
#まずは元になるデータを作成します。
#内容はヘッドになるデータを入力し中身を作ります
str_json = {
    "ヘッド1":{
        "Key1": Value1,
        "Key2": "Value2"
    },
    "ヘッド2":{
        "Key1": Value1,
        "Key2": "Value2"
    },
    "ヘッド3":{
        "Key1": Value1,
        "Key2": "Value2"
    }
}

#JSONを書き込むファイルを開く
f = open('output.json', 'w')

#JSONを作ります
json.dump(str_json, f, ensure_ascii=False) #このとき気をつけないといけないのはASCIIコードを使わないということです。
#日本語のみ使うようにします。

気をつけていただきたいのはjson.dumpにて作成するときに第2引数としてfと第3引数としてensure_ascii=Falseを設定しています。
これは第2引数でファイル開き、第3変数でASCIIモードでの書き込みをできなくしています。
なぜかと言う第3引数にASCIIをFalseすることで日本語コードを文字化けしないようにするためです。

次にJSONのパースに仕方を説明したいと思います。

##JSONのパースの仕方
JSONのパースというと結構難しく考える人も多いです。
実際はJSONで書かれた部分を連想配列化してデータを取ってくると思っていただいたほうが楽かと思います。
前に書いたコードの一部を抜き出して書きますので注意してみていただけると助かります。

JSON_Parseの仕方
str_json = json.loads(str.text) #JSONデータのロード
to_direct = str_json['ヘッド1']['Key1'] #JSONのヘッドデータからKey1を取り込む
to_client = to_direct['Value1'] #キー値データからValueを抜き出す

str_jsonはJSONデータになるのでこのデータを取り込みJSONのデータを連想配列化します。
to_directはstr_jsonからKey1のデータを取り込みます。
to_clientにてto_directの値を抜き出し変数化するわけです。
実に3回データを格納することにより的確にデータを取り出していることがわかります。

意外とPythonって実直なJSONのパースをしていると思います。
連想配列使うとは誰も思っていません。
意外とこの方法がやりやすいと思ったので書いてみました。

実際にPHPとjQueryのJSONの作成方法とパースの方法はプログラミングしたことがありますが。
ワンコードで終わってしまうのでどうやって作成されたのか実際のデータで確認していましたが。
Pythonの方が実際に作り方とパースの仕方がわかりやすいと思います。

8
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?