<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>データ変換  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<atom:link href="https://python.cbagames.jp/tag/%e3%83%87%e3%83%bc%e3%82%bf%e5%a4%89%e6%8f%9b/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.cbagames.jp</link>
	<description>Pythonで、できるをふやそう。</description>
	<lastBuildDate>Fri, 13 Jun 2025 03:12:10 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://python.cbagames.jp/wp-content/uploads/2025/06/cropped-497d491d54402de785c9e043bfa0620a-32x32.png</url>
	<title>データ変換  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<link>https://python.cbagames.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python入門】jsonモジュールの使い方｜JSONの読み書きと変換をやさしく解説！</title>
		<link>https://python.cbagames.jp/2025/06/13/python-json-module-guide/</link>
					<comments>https://python.cbagames.jp/2025/06/13/python-json-module-guide/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Fri, 13 Jun 2025 03:12:09 +0000</pubDate>
				<category><![CDATA[Python入門]]></category>
		<category><![CDATA[jsonモジュール]]></category>
		<category><![CDATA[JSON形式]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web API]]></category>
		<category><![CDATA[データ変換]]></category>
		<category><![CDATA[ファイル操作]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=282</guid>

					<description><![CDATA[目次 はじめに｜JSONってなに？なんでPythonで使うの？JSONとは「データの言語」みたいなものなんでPythonでもJSONを使うの？2. JSONとPythonのデータ型の違い✅ 文字列（String）✅ 真偽 [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに｜JSONってなに？なんでPythonで使うの？</a><ol><li><a href="#toc2" tabindex="0">JSONとは「データの言語」みたいなもの</a></li><li><a href="#toc3" tabindex="0">なんでPythonでもJSONを使うの？</a></li></ol></li><li><a href="#toc4" tabindex="0">2. JSONとPythonのデータ型の違い</a><ol><li><a href="#toc5" tabindex="0">✅ 文字列（String）</a></li><li><a href="#toc6" tabindex="0">✅ 真偽値（Boolean）</a></li><li><a href="#toc7" tabindex="0">✅ None と null</a></li><li><a href="#toc8" tabindex="0">✅ 数値（Number）</a></li><li><a href="#toc9" tabindex="0">✅ エスケープ文字の扱い</a></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol></li><li><a href="#toc11" tabindex="0">3. PythonでJSONを扱う基本（jsonモジュール）</a><ol><li><a href="#toc12" tabindex="0">3-1. Pythonのデータ → JSON文字列に変換する（json.dumps()）</a><ol><li><a href="#toc13" tabindex="0">✅ 日本語が「文字化け」しちゃう？</a></li><li><a href="#toc14" tabindex="0">✅ ダブルクォートやバックスラッシュの自動処理</a></li></ol></li><li><a href="#toc15" tabindex="0">3-2. JSON文字列 → Pythonのデータに変換する（json.loads()）</a><ol><li><a href="#toc16" tabindex="0">✅ ネストされたデータ（階層構造）もOK！</a></li></ol></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol></li><li><a href="#toc18" tabindex="0">4. JSONファイルの読み書き</a><ol><li><a href="#toc19" tabindex="0">✅ JSONファイルを作って保存する（書き込み）</a><ol><li><a href="#toc20" tabindex="0">ポイント解説：</a></li></ol></li><li><a href="#toc21" tabindex="0">✅ JSONファイルを読み込む</a><ol><li><a href="#toc22" tabindex="0">ポイント：</a></li></ol></li><li><a href="#toc23" tabindex="0">✅ エラー対策のヒント</a></li><li><a href="#toc24" tabindex="0">おまけ：ファイルを読み込んで文字列として処理する場合</a></li></ol></li><li><a href="#toc25" tabindex="0">5. よくあるエラーと対処法</a><ol><li><a href="#toc26" tabindex="0">🔴 ① json.decoder.JSONDecodeError</a></li><li><a href="#toc27" tabindex="0">🔴 ② TypeError: Object of type ～ is not JSON serializable</a></li><li><a href="#toc28" tabindex="0">🔴 ③ FileNotFoundError</a></li><li><a href="#toc29" tabindex="0">🔴 ④ 文字化け（\uXXXXが出る）</a></li><li><a href="#toc30" tabindex="0">まとめ：エラーの早見表</a></li></ol></li><li><a href="#toc31" tabindex="0">まとめ｜JSONを扱えるとPythonがもっと便利に！</a><ol><li><a href="#toc32" tabindex="0">あわせて読みたい｜関連するおすすめ記事</a></li></ol></li><li><a href="#toc33" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに｜JSONってなに？なんでPythonで使うの？</span></h2>



<p>「JSON（ジェイソン）」って聞いたことありますか？プログラミングの世界ではよく出てくる言葉なんですが、初心者の方にとっては「なんのこっちゃ？」って感じかもしれませんね。</p>



<p>でも安心してください！この記事では、JSONとは何か、そしてなぜPythonで使うことが多いのかを、やさしく、丁寧に解説していきます。</p>



<h3 class="wp-block-heading"><span id="toc2">JSONとは「データの言語」みたいなもの</span></h3>



<p>まず、JSONは「<strong>JavaScript Object Notation（ジャバスクリプト・オブジェクト・ノーテーション）</strong>」の略です。これは、**データの形をルールにそって表した“書き方”**のことです。</p>



<p>たとえば、人の情報を「名前」「年齢」「住所」みたいに表したいとき、こういうふうに書けます：</p>



<pre class="wp-block-preformatted"><code>{<br>  "name": "たろう",<br>  "age": 20,<br>  "address": "東京都"<br>}<br></code></pre>



<p>このように、JSONは**データをわかりやすく整理して書くためのフォーマット（形式）**なんです。</p>



<h3 class="wp-block-heading"><span id="toc3">なんでPythonでもJSONを使うの？</span></h3>



<p>実はこのJSON、もともとはJavaScriptという言語から生まれた書き方なんですが、<strong>いまではほとんどのプログラミング言語がこの形式を理解できます。</strong></p>



<p>Pythonでも、Webアプリを作ったり、APIと呼ばれる外部サービスとやりとりをしたり、設定ファイルを読み書きしたりするときに、<strong>JSONがよく使われます</strong>。</p>



<p>たとえば、Pythonで「天気予報を調べるアプリ」を作るとき、インターネット上の天気情報APIからデータをもらう必要があります。そのとき、送られてくる情報はたいていJSON形式なんです。</p>



<p>だから、Pythonでアプリやツールを作るときには、このJSONの読み書きができるようになっておくととても便利なんですね。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc4">2. JSONとPythonのデータ型の違い</span></h2>



<p>JSONとPython、どちらも似たような見た目でデータを書けるんですが、実は<strong>ちょっとしたルールの違い</strong>があります。ここでは、その違いをやさしく紹介します。</p>



<h3 class="wp-block-heading"><span id="toc5">✅ 文字列（String）</span></h3>



<p>Pythonでは、文字列をシングルクォート（<code>'</code>）でもダブルクォート（<code>"</code>）でも書けますよね。</p>



<pre class="wp-block-preformatted"><code>name = "たろう"<br>name = 'たろう'<br></code></pre>



<p>どちらでもOKです。</p>



<p>でも、<strong>JSONではダブルクォート <code>" "</code> しか使えません</strong>。</p>



<pre class="wp-block-preformatted"><code>{ "name": "たろう" }  ← OK！<br>{ 'name': 'たろう' }  ← NG！（これはエラーになります）<br></code></pre>



<p>JSONでは必ずダブルクォートを使うようにしましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc6">✅ 真偽値（Boolean）</span></h3>



<p>Pythonでは「True / False」と大文字で書きます。</p>



<pre class="wp-block-preformatted"><code>is_hungry = True<br></code></pre>



<p>でもJSONでは、小文字で「<strong>true / false</strong>」と書くのが正解です。</p>



<pre class="wp-block-preformatted"><code>{ "is_hungry": true }<br></code></pre>



<p>この違い、見た目はそっくりなのでうっかりミスしやすいポイントです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">✅ None と null</span></h3>



<p>Pythonで「何もないよー」という状態を表すのは <code>None</code> ですよね。でも、JSONではこれを <code>null</code> と書きます。</p>



<pre class="wp-block-preformatted"><code>status = None  # Python<br></code></pre>



<pre class="wp-block-preformatted"><code>{ "status": null }  # JSON<br></code></pre>



<p>JSONでは <strong>null = None</strong> と覚えておけばOKです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">✅ 数値（Number）</span></h3>



<p>数値に関しては、PythonもJSONも<strong>基本的にそのまま書けばOK</strong>です。</p>



<pre class="wp-block-preformatted"><code>age = 25<br>height = 1.75<br></code></pre>



<pre class="wp-block-preformatted"><code>{ "age": 25, "height": 1.75 }<br></code></pre>



<p>ただし、文字列と間違えないように、数値にはクォート（<code>"</code>や<code>'</code>）をつけないように注意しましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc9">✅ エスケープ文字の扱い</span></h3>



<p>JSONでは、特殊な記号を文字列の中に含めたいときには「<strong>バックスラッシュ（\）</strong>」を使ってエスケープします。</p>



<p>たとえば、こんなふうに書きます：</p>



<pre class="wp-block-preformatted"><code>{ "message": "彼は\"Python\"が好きです" }<br></code></pre>



<p>これはこう見えます：</p>



<pre class="wp-block-preformatted"><code>彼は"Python"が好きです<br></code></pre>



<p>Pythonでも同じようなエスケープ処理がありますが、JSONを扱うときにも**「バックスラッシュの役割」**を理解しておくと安心です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">まとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>データの種類</th><th>Python</th><th>JSON</th></tr></thead><tbody><tr><td>文字列</td><td><code>'abc'</code> or <code>"abc"</code></td><td><code>"abc"</code>のみ</td></tr><tr><td>真偽値</td><td><code>True</code>, <code>False</code></td><td><code>true</code>, <code>false</code></td></tr><tr><td>無（空）</td><td><code>None</code></td><td><code>null</code></td></tr><tr><td>数値</td><td><code>123</code>, <code>3.14</code></td><td><code>123</code>, <code>3.14</code></td></tr><tr><td>エスケープ</td><td><code>\"</code>, <code>\\</code></td><td><code>\"</code>, <code>\\</code></td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この違いをしっかり覚えておけば、PythonでJSONを扱うときにエラーが起きにくくなりますよ！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc11">3. PythonでJSONを扱う基本（jsonモジュール）</span></h2>



<p>Pythonでは、<strong><code>json</code>という標準モジュール</strong>を使えば、JSONの読み書きがとっても簡単にできます。特別なライブラリをインストールしなくても、最初から使えるのが嬉しいポイントです！</p>



<p>ここでは、PythonでJSONを扱うための<strong>基本的な使い方</strong>を、例といっしょにわかりやすく紹介していきますね。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">3-1. Pythonのデータ → JSON文字列に変換する（json.dumps()）</span></h3>



<p>たとえば、Pythonで辞書データを作ったとします。</p>



<pre class="wp-block-preformatted"><code>data = {<br>    "name": "たろう",<br>    "age": 18,<br>    "is_student": True<br>}<br></code></pre>



<p>このデータをJSON形式の「文字列」に変えたいときは、<code>json.dumps()</code> を使います。</p>



<pre class="wp-block-preformatted"><code>import json<br><br>json_text = json.dumps(data)<br>print(json_text)<br></code></pre>



<p>出力結果：</p>



<pre class="wp-block-preformatted"><code>{"name": "たろう", "age": 18, "is_student": true}<br></code></pre>



<p>ちゃんとPythonの <code>True</code> が JSONの <code>true</code> に変わってるのがわかりますね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading"><span id="toc13">✅ 日本語が「文字化け」しちゃう？</span></h4>



<p>実は、<code>json.dumps()</code> はデフォルトで<strong>日本語をUnicodeという文字コードに変換</strong>しちゃいます。たとえば：</p>



<pre class="wp-block-preformatted"><code>json.dumps({"item": "りんご"})<br></code></pre>



<p>結果：</p>



<pre class="wp-block-preformatted"><code>{"item": "\u308a\u3093\u3054"}<br></code></pre>



<p>「えっ、これなに！？」って思いますよね。</p>



<p>そんなときは、<strong><code>ensure_ascii=False</code></strong> をつければOK！</p>



<pre class="wp-block-preformatted"><code>json.dumps({"item": "りんご"}, ensure_ascii=False)<br></code></pre>



<p>結果：</p>



<pre class="wp-block-preformatted"><code>{"item": "りんご"}<br></code></pre>



<p>これで日本語もきれいに表示されますよ！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading"><span id="toc14">✅ ダブルクォートやバックスラッシュの自動処理</span></h4>



<p>もし文字列の中に <code>"</code> や <code>\</code> を含んでいたら、<code>json.dumps()</code> が自動でエスケープしてくれます。</p>



<pre class="wp-block-preformatted"><code>json.dumps({"text": '彼は"Python"が好きです'})<br></code></pre>



<p>結果：</p>



<pre class="wp-block-preformatted"><code>{"text": "彼は\"Python\"が好きです"}<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">3-2. JSON文字列 → Pythonのデータに変換する（json.loads()）</span></h3>



<p>逆に、JSON形式の「文字列」をPythonの辞書などに戻したいときは、<code>json.loads()</code> を使います。</p>



<pre class="wp-block-preformatted"><code>json_text = '{"name": "はなこ", "age": 22, "is_student": false}'<br>python_obj = json.loads(json_text)<br>print(python_obj)<br></code></pre>



<p>結果：</p>



<pre class="wp-block-preformatted"><code>{'name': 'はなこ', 'age': 22, 'is_student': False}<br></code></pre>



<p><code>false</code> がちゃんと <code>False</code> に変わってますね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading"><span id="toc16">✅ ネストされたデータ（階層構造）もOK！</span></h4>



<p>JSONでは、こんなふうに中に辞書やリストを入れることもあります：</p>



<pre class="wp-block-preformatted"><code>{<br>  "user": {<br>    "name": "たろう",<br>    "scores": [80, 90, 100]<br>  }<br>}<br></code></pre>



<p>これを Python に変換しても、ちゃんとネスト（入れ子）構造が保たれます。</p>



<pre class="wp-block-preformatted"><code>text = '{"user": {"name": "たろう", "scores": [80, 90, 100]}}'<br>data = json.loads(text)<br>print(data["user"]["scores"][1])  # → 90<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">まとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>処理の目的</th><th>関数名</th><th>よく使う引数</th></tr></thead><tbody><tr><td>Python → JSON文字列</td><td><code>json.dumps()</code></td><td><code>ensure_ascii=False</code>など</td></tr><tr><td>JSON文字列 → Python</td><td><code>json.loads()</code></td><td>特になし</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この2つの関数を覚えておくだけで、JSONとのやりとりがぐんと楽になります！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc18">4. JSONファイルの読み書き</span></h2>



<p>これまでは「文字列」としてJSONを扱ってきましたが、実際の開発では**JSON形式のファイル（.json）**を読み込んだり、書き込んだりする場面がとても多いです。</p>



<p>たとえば、アプリの設定ファイルや、保存したデータを次回読み込むために使われたりします。</p>



<p>Pythonでは、<strong>ふつうのファイルの読み書き＋<code>json</code>モジュール</strong>を組み合わせることで簡単に扱えますよ！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">✅ JSONファイルを作って保存する（書き込み）</span></h3>



<p>まずは、Pythonの辞書データを <code>.json</code> ファイルに保存してみましょう。</p>



<pre class="wp-block-preformatted"><code>import json<br><br>data = {<br>    "title": "Python入門",<br>    "price": 0,<br>    "tags": ["プログラミング", "初心者", "Python"]<br>}<br><br># ファイルに書き込む<br>with open("book.json", "w", encoding="utf-8") as f:<br>    json.dump(data, f, ensure_ascii=False, indent=2)<br></code></pre>



<h4 class="wp-block-heading"><span id="toc20">ポイント解説：</span></h4>



<ul class="wp-block-list">
<li><code>open("book.json", "w", encoding="utf-8")</code><br>→ 書き込みモード（<code>"w"</code>）でファイルを開きます。日本語を扱うのでエンコーディングは <code>"utf-8"</code> に！</li>



<li><code>json.dump()</code><br>→ データをファイルに直接書き込む関数です。</li>



<li><code>ensure_ascii=False</code><br>→ 日本語をそのまま出力したいときの必須オプション！</li>



<li><code>indent=2</code><br>→ JSONファイルを<strong>きれいに整形</strong>して保存するオプション。人間にも見やすくなります♪</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">✅ JSONファイルを読み込む</span></h3>



<p>今度は、保存された <code>.json</code> ファイルを読み込んで、Pythonの辞書データとして使ってみましょう。</p>



<pre class="wp-block-preformatted"><code>import json<br><br># ファイルから読み込む<br>with open("book.json", "r", encoding="utf-8") as f:<br>    data = json.load(f)<br><br>print(data["title"])  # → Python入門<br></code></pre>



<h4 class="wp-block-heading"><span id="toc22">ポイント：</span></h4>



<ul class="wp-block-list">
<li><code>open(..., "r", encoding="utf-8")</code><br>→ 読み込みモード（<code>"r"</code>）で開きます。</li>



<li><code>json.load()</code><br>→ JSONファイルの内容を<strong>Pythonの辞書などのオブジェクトに変換</strong>してくれます。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">✅ エラー対策のヒント</span></h3>



<p>ファイルを読み込むときは、次のようなエラーが出ることもあります。</p>



<ul class="wp-block-list">
<li>ファイルが存在しない → <code>FileNotFoundError</code></li>



<li>JSONの書式が間違っている → <code>json.JSONDecodeError</code></li>
</ul>



<p>このようなときは、ファイル名や拡張子、JSONの中身が正しいかをチェックしてみてくださいね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">おまけ：ファイルを読み込んで文字列として処理する場合</span></h3>



<p>もしファイルの中身を「一度文字列として読み込んでから」処理したいなら、こう書けます：</p>



<pre class="wp-block-preformatted"><code>with open("book.json", "r", encoding="utf-8") as f:<br>    json_text = f.read()<br><br>data = json.loads(json_text)<br></code></pre>



<p><code>ead()</code>で文字列にして、それから <code>json.loads()</code> で辞書に変換するパターンですね！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、<strong>JSONファイルの読み書きもバッチリ</strong>です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc25">5. よくあるエラーと対処法</span></h2>



<p>PythonでJSONを扱っていると、<strong>ちょっとしたミス</strong>でエラーが出ることがあります。ここでは、よくあるエラーとその「原因」や「直し方」をわかりやすく紹介します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc26">🔴 ① json.decoder.JSONDecodeError</span></h3>



<p><strong>エラー例：</strong></p>



<pre class="wp-block-preformatted"><code>import json<br><br>text = '{name: "たろう"}'  # ← カギかっこのミス！<br>data = json.loads(text)<br></code></pre>



<p>出力されるエラー：</p>



<pre class="wp-block-preformatted"><code>json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes<br></code></pre>



<p><strong>原因と対処法：</strong></p>



<p>このエラーは、JSON文字列の<strong>書き方が正しくない</strong>ときに出ます。</p>



<p>JSONでは、キーや文字列に<strong>ダブルクォート（&#8221;）が必須</strong>です。</p>



<p>✅ 修正例：</p>



<pre class="wp-block-preformatted"><code>text = '{"name": "たろう"}'  # ダブルクォートで囲む！<br>data = json.loads(text)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">🔴 ② TypeError: Object of type ～ is not JSON serializable</span></h3>



<p><strong>エラー例：</strong></p>



<pre class="wp-block-preformatted"><code>import json<br><br>def greet():<br>    return "こんにちは"<br><br>data = {"greeting": greet}<br>json.dumps(data)<br></code></pre>



<p><strong>原因と対処法：</strong></p>



<p>このエラーは、「JSONに変換できないデータ」が含まれているときに出ます。</p>



<p>上の例では、関数 <code>greet</code> をJSONに変換しようとしたためにエラーになっています。</p>



<p>✅ 修正例：</p>



<pre class="wp-block-preformatted"><code>data = {"greeting": greet()}  # 関数を実行してから渡す<br>json.dumps(data)<br></code></pre>



<p>✅ 変換できない主なデータ：</p>



<ul class="wp-block-list">
<li>関数</li>



<li>クラスのインスタンス（未対応のもの）</li>



<li>datetimeオブジェクト（→文字列に変換すればOK）</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">🔴 ③ FileNotFoundError</span></h3>



<p><strong>エラー例：</strong></p>



<pre class="wp-block-preformatted"><code>with open("setting.json", "r", encoding="utf-8") as f:<br>    data = json.load(f)<br></code></pre>



<p><strong>原因と対処法：</strong></p>



<p>指定したファイルが<strong>存在しないとき</strong>に出るエラーです。</p>



<p>✅ 修正チェックポイント：</p>



<ul class="wp-block-list">
<li>ファイル名にまちがいがないか？</li>



<li>拡張子 <code>.json</code> を忘れていないか？</li>



<li>ファイルが本当に同じフォルダにあるか？</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">🔴 ④ 文字化け（\uXXXXが出る）</span></h3>



<p><strong>例：</strong></p>



<pre class="wp-block-preformatted"><code>json.dumps({"メッセージ": "こんにちは"})<br></code></pre>



<p>出力：</p>



<pre class="wp-block-preformatted"><code>{"メッセージ": "\u3053\u3093\u306b\u3061\u306f"}<br></code></pre>



<p><strong>対処法：</strong></p>



<p>→ <code>ensure_ascii=False</code> をつけましょう！</p>



<pre class="wp-block-preformatted"><code>json.dumps({"メッセージ": "こんにちは"}, ensure_ascii=False)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc30">まとめ：エラーの早見表</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>エラー名</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>JSONDecodeError</code></td><td>書式ミス（クォート忘れなど）</td><td>正しいJSON文字列か確認</td></tr><tr><td><code>TypeError</code></td><td>変換できない型（関数・日付など）</td><td><code>str()</code> や <code>.isoformat()</code>で変換</td></tr><tr><td><code>FileNotFoundError</code></td><td>ファイルが存在しない</td><td>ファイル名やパスを確認</td></tr><tr><td>日本語が文字化け</td><td><code>\uXXXX</code>が出る</td><td><code>ensure_ascii=False</code> を使う</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>「なんでエラーが出るんだろう？」と困ったときは、<strong>まずはエラーメッセージをよく読んで</strong>、ここにあるパターンに当てはまるか見てみてくださいね。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc31">まとめ｜JSONを扱えるとPythonがもっと便利に！</span></h2>



<p>この記事では、PythonでJSONを使うための基本をじっくり解説してきました。</p>



<p>もう一度、ポイントをおさらいしておきましょう！</p>



<ul class="wp-block-list">
<li>**JSONは「データの共通言語」**のようなもの。特にWeb APIや設定ファイルでよく使われます。</li>



<li>Pythonでは <code>json</code> モジュールを使って、<strong>文字列やファイルとしての読み書きが超カンタン</strong>にできます。</li>



<li><code>json.dumps()</code> と <code>json.loads()</code> を使えば、PythonとJSONの相互変換も自由自在！</li>



<li>ファイルで扱うときは <code>json.dump()</code> / <code>json.load()</code> を使って、<strong>きれいに保存したり読み込んだり</strong>できます。</li>



<li>エラーが出たときは、<strong>文字列のクォート・日本語文字化け・型エラー</strong>など、よくあるパターンをチェック！</li>
</ul>



<p>JSONの読み書きができると、<strong>データの保存・通信・設定管理など、いろんな場面でPythonがもっとパワフルに使える</strong>ようになります。ぜひ覚えておきましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">あわせて読みたい｜関連するおすすめ記事</span></h3>



<p>PythonでJSONを使いこなすなら、こちらの記事も役立ちます👇</p>



<ul class="wp-block-list">
<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/11/python-custom-module-howto/">【Python入門】自作モジュールの作り方と使い方を初心者向けにやさしく解説！</a><br>→ プログラムを整理して再利用したいときに便利！</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/09/fastapi-basic-usage-guide/">【初心者向け】FastAPIの基本の使い方をやさしく解説</a><br>→ JSONを使ったAPIアプリ開発の第一歩！</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/12/python-argparse-basic-guide/">【Python入門】コマンドライン引数をやさしく解説｜argparseモジュール</a><br>→ コマンドラインでJSONファイルを指定したりするときに便利！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc33">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">JSONと辞書（dict）は同じものですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>似ていますが、JSONは「文字列として保存・通信できる形式」、辞書は「Python内で使うデータ構造」です。相互に変換できます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">JSONファイルが読み込めないときは？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>拡張子 <code>.json</code> を忘れていたり、文字コードや書き方にミスがある場合があります。エラー文をよく見て対処しましょう！</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">JSONに日本語を書きたいけど文字化けします。</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>json.dumps()</code> や <code>json.dump()</code> を使うときに、<code>ensure_ascii=False</code> を忘れずに書きましょう！</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/13/python-json-module-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
