【python】辞書オブジェクトをテキストにする時はjson.dumps(dict)
わたしへ。
こちらも検索回数が増えてきましたね。
そろそろ覚えてください。
わたしより。
結論
import json
test = {'key1':'value1','key2':'value2'}
test_json = json.dumps(test)
使いどころ
あっちからこっちにデータを送るぞーって時に、{キー:値}の辞書形式のまま送りたいんだけど、辞書オブジェクトをそのままじゃ渡せないって時に。
例えばPub/Subメッセージのbodyとして辞書オブジェクトをそのままどーん☆したい。
bodyはbase64エンコードしておかないといけない。
でも辞書オブジェクトそのままはエンコードできない。
そこで、{とか:とか}とかまで全部込みで一旦テキストにしてからエンコードしたい。
そんなときにJSONの出番だよ!
str(dict)でも一応フンワリとはテキストに出来るけど、フンワリしているので、折角JSONという規格があって、import込み2行でJSONにできるんだから、JSONにしといた方が後が楽だね。「JSONで送るよ」って言うだけで誰にでも渡せるしね。
import json
で、jsonモジュールを忘れずインポートして
json.dumps(dict)
すればJSON文字列になる。後はエンコードするなり何なり。
ちなみにJSONから元の辞書に戻すときは
json.loads(text)
Pub/Subとかで受け取ったjson文字列はこれで辞書形式にできるぞ!
備考:dumpとdumps/loadとloadsの違い
dumpとdumpsという2種類のメソッドがあるので注意。
dumpはdump(dict)で実行すると第二引数(fp)がないよー、と言われる。
fp=ファイルパスを与えてファイルに書き出す為のメソッド。
一方のdumpsは辞書を文字列にしてくれる。
一方、load系にもloadとloadsがある。
loadはJSON形式の「ファイルを」読み込んで辞書にしてくれる。
loadsは「文字列」を読み込んで辞書にしてくれる。
(sはstringのsだと思えば間違いが減りそうな気がする)
この記事が気に入ったらサポートをしてみませんか?