Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでJSON出力を生成する方法を徹底解説|jsonモジュールの使い方

Pythonでは標準ライブラリのjsonモジュールを使うことで、辞書(dict)型のデータをそのままJSON形式の文字列に変換(シリアライズ)できます。変換にはjson.dumps()関数を使用します。

基本的な使い方:dictをJSON文字列に変換する

import json

my_dict = {
    'foo': 42,
    'bar': {
        'baz': "Hello",
        'poo': 124.2
    }
}
my_json = json.dumps(my_dict)
print(my_json)

出力結果

このコードを実行すると、次のような出力が得られます。

'{"foo": 42, "bar": {"baz": "Hello", "poo": 124.2}}'

また、json.dumps()indent引数を渡すことで、インデント付きの読みやすいJSON(pretty print)として出力することも可能です。

indentを使って整形して出力する

import json

my_dict = {
    'foo': 42,
    'bar': {
        'baz': "Hello",
        'poo': 124.2
    }
}
my_json = json.dumps(my_dict, indent=2)
print(my_json)

出力結果

このコードを実行すると、次のように整形された出力が得られます。

{
  "foo": 42,
  "bar": {
    "baz": "Hello",
    "poo": 124.2
  }
}

日本語を含むデータを出力する場合

デフォルト設定では、非ASCII文字(日本語など)はUnicodeエスケープされた状態で出力されます。日本語をそのまま表示したい場合は、ensure_ascii=Falseを指定しましょう。

import json

my_dict = {'name': '太郎'}
print(json.dumps(my_dict, ensure_ascii=False))
# 出力: {"name": "太郎"}

JSONをファイルに保存する場合

JSON文字列として取得するのではなく、ファイルに直接書き込みたい場合は、json.dump()を使用します。dumpsdumpの違いは、末尾の「s」(string)があるかどうかだけです。

import json

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(my_dict, f, indent=2, ensure_ascii=False)

このように、Pythonのjsonモジュールを使えば、辞書データから整形済みのJSON出力まで数行のコードで簡単に生成できます。

  1. PythonからMySQLのIF()関数を使う方法|SELECT文で条件分岐してデータを判定する

    MySQLのIF()関数は、条件に応じて異なる値を返すための条件分岐用の関数です。指定した条件が真(TRUE)の場合と偽(FALSE)の場合で、それぞれ別の値を返すことができます。この記事では、PythonからMySQLデータベースに接続し、SELECT文の中でIF()関数を活用してデータを条件付きで取得する方法を解説します。IF()関数の構文IF(条件, 真の場合の値, 偽の場合の値)IF()関数はSELECT句と組み合わせて使用でき、特定の基準に基づいて取得結果を切り替えることができます。PythonでMySQLのテーブルからIF()関数を使ってデータを取得する手順mysql.connec

  2. PythonのBokehを使ってインタラクティブな散布図を生成する方法

    Bokehとは?Bokehは、Pythonでデータ可視化を行うためのオープンソースのパッケージです。最大の特徴は、HTMLとJavaScriptを使ってグラフを描画する点にあり、Webベースのダッシュボードを構築する際に特に威力を発揮します。仕組みとしては、BokehがデータソースをJSONファイルに変換し、それをJavaScriptライブラリである「BokehJS」への入力として渡します。BokehJSはTypeScriptで実装されており、モダンブラウザ上で高速に可視化をレンダリングできるのが強みです。Matplotlib・Seabornとの違いMatplotlibやSeabornが静的な