Python から JSON を dump する

Python から JSON を dump するPython
ゆうすけ
ゆうすけ

PythonからJSONを出力したいです。

資格マフィア
資格マフィア

json dump を使うことで JSON を出力できるぞ。
また、オプションによって様々な出力ができる。

 

✔️ 本記事のテーマ

 Python から json dump をする方法

 

✔️ 読者さんへの前置きメッセージ

本記事は
「Python から JSON を出力する方法」
について書いています。

 

この記事を読むことで
「Python の JSON 出力 や そのオプション」
について理解できます。

 

システムのアウトプットとして、JSON を出力することはよくあります。

 

Python では、辞書型オブジェクトをその形式のまま JSON として出力することができます。

また、Python の JSON の出力は様々なオプションを付けることができます。

 

それでは、解説していきましょう。

 

Python から JSON を dump する

Python から JSON を dump する

とりあえず、Python から JSON を出力してみましょう。

 

jsonライブラリdump() を使うことで、PythonからJSONを出力することができます。

import json


sample_dict = {'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': 'egg'}


with open('./sample.json', 'w') as f:
    json.dump(sample_dict, f)

 

このコードを実行すると sample_dict の中身が記載された sample.json が出力されます。

{'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': 'egg'}

 

 

Python から JSON を dump する際のオプション

Python から JSON を dump する際のオプション

Python から JSON を出力する際に、オプションを指定することで様々な出力が可能となります。

 

主なオプションは以下の通りです。

  • indent
  • ensure_ascii
  • separators
  • sort_keys

 

順番に解説していきましょう。

 

json.dumps()のオプション: indent

indent オプションを指定することで、要素ごとに改行、インデントした出力になります。

import json


sample_dict = {'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': 'egg'}

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

 

このコードを実行すると、以下のような JSON ファイルが出力されます。

{
    "A": "apple",
    "B": "banana",
    "C": "carrot",
    "D": "drink",
    "E": "egg"
}

 

要素ごとに改行されて、半角スペース4つインデントされてます。

 

このように、indent オプションをつけることで、見やすい JSON として出力することができます。

 

json.dumps()のオプション: ensure_ascii

ensure_ascii オプションを指定することで、
全角文字などの非ASCII文字をUnicodeエスケープせずに出力することができます。

 

そもそも json.dump() では日本語などの非ASCII文字を出力しようとすると、
Unicodeエスケープされて出力されます。

 

試しに、以下のように ‘卵’ という文字を json.dump() してみましょう。

import json


sample_dict = {'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': '卵'}

with open('./sample.json', 'w') as f:
    json.dump(sample_dict, f)

 

このコードを実行すると、 sample.json の中身は以下のようになってしまいます。

{"A": "apple", "B": "banana", "C": "carrot", "D": "drink", "E": "\u5375"}

‘卵’ の文字が “\u5375” という表記にUnicodeエスケープされています。

 

そこで、 ensure_ascii=False とすると、Unicodeエスケープをせずに出力することができます。

import json


sample_dict = {'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': '卵'}

with open('./sample.json', 'w') as f:
    json.dump(sample_dict, f, ensure_ascii=False)

 

これにより、日本語などの非ASCII文字をそのまま JSON 出力することができます。

{"A": "apple", "B": "banana", "C": "carrot", "D": "drink", "E": "卵"}

 

 

json.dumps()のオプション: separators

json.dump() では dict の key と value の間を : 、 要素の間を , で区切って出力されます。

 

separators オプションでそれぞれの区切り文字を指定することができます。

 

なお、separators オプションは以下のように 
(要素の区切り文字, keyとvalueの間)tuple で指定します。

import json


sample_dict = {'A': 'apple', 'B': 'banana', 'C': 'carrot', 'D': 'drink', 'E': 'egg'}

with open('./sample.json', 'w') as f:
    json.dump(sample_dict, f, separators=('/', '_'))

 

このコードを実行すると、以下の JSON が出力されます。

{"A"_"apple"/"B"_"banana"/"C"_"carrot"/"D"_"drink"/"E"_"egg"}

要素の区切り文字/ で、key と value の間_ で出力されています。

 

json.dumps()のオプション: sort_keys

sort_keys=True とすると、dict の key を基準にソートして出力します。

 

例えば、以下のように、要素の順番をバラバラにした sample_dict を 
sort_keys オプションをつけて json.dump() を通してみます。

import json


sample_dict = {'B': 'banana', 'C': 'carrot', 'A': 'apple', 'D': 'drink', 'E': 'egg'}

with open('./sample.json', 'w') as f:
    json.dump(sample_dict, f, sort_keys=True)

 

すると、以下のように、key順にソートされ出力されます。

{"A": "apple", "B": "banana", "C": "carrot", "D": "drink", "E": "egg"}

 

 

Pythonを書籍で学ぶなら

Pythonを書籍で学ぶなら

Python の json dumpについて解説しました。

 

Pythonを基礎から学ぶためには以下の書籍がオススメです。

 

この書籍は初心者向けにかなり丁寧に書かれています。

プログラミング本は難しく、
とっつきにくい印象があるかもしれませんが、
この書籍はとても分かりやすく、
読んでいて「楽しい」と思えるような書きっぷりになっています。

 

初めてPythonを基礎から学ぶ方にはオススメの書籍です。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

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