質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2442閲覧

pythonでjsonファイルを出力する際の文字化け

pukupuq

総合スコア1

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/18 03:55

前提・実現したいこと

SpotifyAPIで取得したデータを用いてpythonからjsonファイルを出力させようとしています。

発生している問題・エラーメッセージ

ファイルに書き込みはできたのですが出力すると、"の前に\が入ってしまいます。
\の取り除き方を教えていただけると助かります。

"{\"nodes\":[{\"id\": \"Supercar\"}, {\"id\": \"Sunny Day Service\"}, {\"id\": \"never young beach\"}, {\"id\": \"Yogee New Waves\"}, {\"id\": \"GING NANG BOYZ\"}, {\"id\": \"cero\"}, {\"id\": \"bonobos\"}, {\"id\": \"Fujifabric\"}, {\"id\": \"Soutaiseiriron\"}, {\"id\": \"Yuta Orisaka\"}, {\"id\": \"CHIAKI SATO\"}, {\"id\": \"Number Girl\"}, {\"id\": \"syrup16g\"}, {\"id\": \"clammbon\"}, {\"id\": \"SUPER BUTTER DOG\"}, {\"id\": \"TRICERATOPS\"}, {\"id\": \"D.A.N.\"}, {\"id\": \"Humbert Humbert\"}, {\"id\": \"Chatmonchy\"}, {\"id\": \"Thee Michelle Gun Elephant\"}]"

該当のソースコード

artist_id = '26WuprsX7JRG69T0PXkze4' result = spotify.artist_related_artists(artist_id) al = [] for artist in result['artists']: artist_name = artist['name'] al.append({'id': '{0}'.format(artist_name)}) json_str = json.dumps(al,ensure_ascii=False) dictionary = '{"nodes":' + json_str print(dictionary) # ファイル書き込み savepath = 'sample2.json' with open(savepath, 'w') as outfile: json.dump(dictionary ,outfile)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

json_str = json.dumps(al,ensure_ascii=False) dictionary = '{"nodes":' + json_str

これを↓のように修正します。

# json_str = json.dumps(al,ensure_ascii=False) # この行は不要なので削除 dictionary = {"nodes": al} # JSONオブジェクトのフォーマットの文字列ではなく、辞書として格納する。

バックスラッシュが入ってしまった原因は、既にdumps関数によって文字列になっているものを、with openの次の行にあるdump関数でJSONフォーマット化したためです。

投稿2020/07/18 04:11

編集2020/07/18 05:03
sfdust

総合スコア1137

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pukupuq

2020/07/18 04:26

ありがとうございます! 迅速かつ原因も分かりやすく回答していただきほんとうにたすかりました。
guest

0

json.dump() の引数に文字列型が与えられています

python

1dictionary = '{"nodes":' + json_str 2# --- 略 --- 3 json.dump(dictionary ,outfile)

引数には辞書型や list 型を与えてください:

python

1dictionary = {'nodes': al} 2# --- 略 --- 3 json.dump(dictionary, outfile, ensure_ascii=False)

json --- JSON エンコーダおよびデコーダ — Python 3.8.4 ドキュメント

投稿2020/07/18 04:16

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pukupuq

2020/07/18 04:33

文字列を入れてはいけないんですね。 困っていたので助かりました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問