Pythonの辞書をJavaScriptに渡す方法|JSONを使ったデータ変換の基本
PythonとJavaScriptでは、辞書(ディクショナリ)の内部的な表現方法が異なります。そのため、両者の間でデータを受け渡しするには、中間形式を介す必要があります。最も広く使われている中間形式がJSON(JavaScript Object Notation)です。JSONはシンプルで軽量なデータ交換フォーマットであり、言語を問わず利用できるのが特徴です。
Python側:辞書をJSON文字列に変換する
Pythonでは、jsonモジュールのdumps()関数を使うことで、辞書オブジェクトを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}}'
dumps()は「dump string」の略で、Pythonのオブジェクトを文字列として出力します。ネストした構造もそのまま変換される点がポイントです。
Python側:JSON文字列を辞書に戻す
逆に、受け取ったJSON文字列をPythonの辞書に復元したい場合は、loads()関数を使用します。
コード例
import json
my_str = '{"foo": 42, "bar": {"baz": "Hello", "poo": 124.2}}'
my_dict = json.loads(my_str)
print(my_dict['bar']['baz'])
出力結果
Hello
loads()は「load string」の略です。文字列を解析して元の辞書構造を再現するため、ネストされた値にも通常の辞書と同じ方法でアクセスできます。
JavaScript側での扱い方
JavaScript側では特別な処理はほとんど不要です。そもそもJSONとは「JavaScript Object Notation」の略であり、JavaScriptのオブジェクト記法そのものだからです。
- オブジェクトとして直接受け取った場合: そのままJavaScriptのオブジェクトとして利用できます。
- 文字列として受け取った場合:
JSON.parse()メソッドを使ってオブジェクトに変換します。
コード例
const jsonString = '{"foo": 42, "bar": {"baz": "Hello", "poo": 124.2}}';
const obj = JSON.parse(jsonString);
console.log(obj.bar.baz); // Hello
まとめ
PythonとJavaScriptの間でデータをやり取りする際は、以下の手順が基本となります。
- Python側:
json.dumps()で辞書をJSON文字列に変換 - 通信:JSON文字列として送受信(APIやファイル経由など)
- JavaScript側:必要に応じて
JSON.parse()でオブジェクト化
この流れを押さえておけば、異なる言語間でも安全かつ効率的にデータを受け渡しできます。
-
【Python】辞書形式の文字列をdict型に変換する2つの安全な方法
はじめにPythonでは、文字列として表現された辞書(例:{foo: bar})を、実際の辞書(dict型)オブジェクトに変換したい場面がよくあります。この記事では、代表的な2つの変換方法である ast.literal_eval() と json.loads() の使い方を解説します。方法1: ast.literal_eval() を使うast.literal_eval() を使うと、文字列をPythonの式として安全に評価できます。この関数は、式ノードまたはPython式を含む文字列を評価しますが、許可されているのは文字列・数値・タプル・リスト・辞書・ブール値・Noneといったリテラル構造の
-
Python関数で辞書を返す方法とは?基本の書き方とサンプルコード
Pythonでは、関数から辞書(dict)を返す方法がいくつかあります。ここでは、最も基本的なパターンを中心に、具体的なサンプルコードとともに分かりやすく解説します。 基本の方法:dict()で辞書を作成してreturnする まずは、関数内でdict()コンストラクタを使って空の辞書を生成し、キーと値を追加したうえでreturn文で返す方法です。 # この関数は辞書を返します def foo(): d = dict() d[str] = Tutorialspoint d[x] = 50 return d print(foo()) 実行結果 {x: 50,