【2026年8月最新】JSONとは?Pythonのjson.dumps使い方完全ガイド|文字化け対策・API連携の基礎知識
「SlackやLINEと連携するツールの設定でJSONというファイルが出てきた」「AIツールの導入資料にjson.dumpsという単語が書いてあった」——プログラミングとは縁のない業務をしている方でも、AIツールやSaaS連携を調べているうちにJSONという言葉に行き当たる場面が増えています。
JSON自体は決して難しい概念ではありませんが、初めて見ると「呪文のような記号の羅列」に見えてしまいます。この記事では、JSONとは何か、Pythonのjson.dumpsの基本的な使い方、そして日本語でよく起きる文字化けの対処法を、非エンジニアの方にも分かる言葉で整理します。あわせて、業務でJSONに出会う具体的な場面と、Claude CodeがAPI連携の裏側でJSONをどう扱っているかも紹介します。
json.dumpsを使ってWordPressにデータを送信しています。今日はその裏側も含めて、実例つきで解説していきます。この記事を最後まで読むと、次の5つが明確になります。
01 WHY IT MATTERS なぜ非エンジニアでも「JSON」を目にする機会が増えているのか AIツール・SaaS連携が広がるほど、裏側にJSONが登場する
近年、SlackやLINE、freee、Googleカレンダーなど、複数のツールを連携させて業務を自動化する場面が急増しています。こうしたツール同士がデータをやり取りする際の共通言語として、最も広く使われている形式がJSONです。
| 場面 | JSONが登場する理由 |
|---|---|
| チャットツールへの通知連携 | Slack・LINEなどへの通知データはJSON形式でやり取りされる |
| AIツールの設定ファイル | Claude Codeなど多くのAIツールが設定情報をJSON形式で保存 |
| Webサービス間のAPI連携 | freee・WordPress等、多くのAPIがJSON形式でデータを送受信 |
| 業務システムの出力データ | 一部の基幹システムがCSVに加えJSON出力にも対応 |
つまり、JSONは特殊な専門知識というより、「ツール同士が会話するための共通の書式」だと捉えると理解しやすくなります。次の章から、その中身を具体的に見ていきましょう。
02 WHAT IS JSON JSONとは何か(非エンジニア向けの基礎知識) 「見出しと値のペア」が入れ子になっているだけ
JSON(JavaScript Object Notation)は、データを表現するための軽量なテキスト形式です。名前に「JavaScript」とついていますが、現在ではプログラミング言語を問わず、データのやり取りに広く使われている業界標準の形式になっています。
📚 用語解説
JSON(JavaScript Object Notation):データを「キー(項目名)」と「値」のペアで表現するテキスト形式。中括弧{}で1つのまとまり(オブジェクト)を表し、角括弧[]でリスト(複数のまとまり)を表します。人間にもある程度読みやすく、かつプログラムからも扱いやすいという特徴から、Web・アプリ・AIツールなど幅広い分野で標準的に使われています。
{
"name": "菅澤",
"role": "代表",
"skills": ["営業", "AI活用", "経営"],
"active": true
}
この例では、"name"というキー(項目名)に対して"菅澤"という値が対応しています。Excelでいえば「列見出し」と「セルの値」の関係に近いイメージです。角括弧[]で囲まれた"skills"のように、1つのキーに複数の値(リスト)を持たせることもできます。
JSONの「キーと値のペア」は、Excelの「列見出しと、その下のセルの値」に近い関係です。ただしJSONは表よりも柔軟で、1つの項目の中にさらに別の表(入れ子構造)を持たせられる点が異なります。SlackやAI連携のデータで階層が深く見えるのは、この入れ子構造のためです。
03 PYTHON JSON BASICS Pythonのjsonモジュールの基本的な使い方 dumpsとloads、2つの基本操作を押さえる
Pythonには、JSON形式のデータを扱うためのjsonという標準モジュールが用意されています。最もよく使う操作は、次の2つです。
| 関数 | 役割 | 入力 → 出力 |
|---|---|---|
| json.dumps() | Pythonのデータ(辞書・リスト等)をJSON文字列に変換 | Python辞書 → JSON文字列 |
| json.loads() | JSON文字列をPythonのデータに変換 | JSON文字列 → Python辞書 |
import json
data = {"name": "菅澤", "role": "代表", "active": True}
# Pythonのデータ → JSON文字列
json_str = json.dumps(data)
print(json_str)
# JSON文字列 → Pythonのデータ
parsed = json.loads(json_str)
print(parsed["name"]) # 菅澤
📚 用語解説
シリアライズ(直列化):プログラム内部のデータ(辞書やリストなど)を、ファイル保存や通信で送れる形式(文字列)に変換すること。json.dumps()はこの「シリアライズ」を行う関数です。逆に、文字列を元のデータ構造に戻す処理は「デシリアライズ」と呼ばれ、json.loads()が該当します。
APIを使ってツール同士を連携する際は、このdumpsで作った文字列をネットワーク経由で送信し、受け取った側がloadsで元のデータ構造に戻す、という流れが基本になります。第1章で紹介したSlack通知やAPI連携の裏側でも、この仕組みが使われています。
dump系はファイルへの直接書き込み、dumps(dump + string)は文字列としてメモリ上に持つ、という違いがあります。実務ではAPI連携でよく使うdumpsの方を覚えておけば困りません。04 DUMPS OPTIONS json.dumpsの主要オプションと日本語の文字化け対策 日本語を扱う開発者が必ずつまずくポイント
json.dumps()には、出力結果を調整するためのオプション(引数)がいくつか用意されています。特に日本語を扱う場合、最初につまずきやすいのがensure_asciiというオプションです。
import json
data = {"name": "菅澤", "message": "こんにちは"}
# デフォルト(ensure_ascii=True)
print(json.dumps(data))
# => {"name": "\u83ec\u6fa4", "message": "\u3053\u3093\u306b\u3061\u306f"}
# ensure_ascii=False にすると日本語がそのまま出力される
print(json.dumps(data, ensure_ascii=False))
# => {"name": "菅澤", "message": "こんにちは"}
json.dumpsは初期設定(ensure_ascii=True)のままだと、日本語を含む非ASCII文字を\uXXXXという記号列に変換して出力します。これは壊れているわけではなく、正しい変換結果です。ただし人間が読んだときに「文字化けした」ように見えてしまうため、日本語を扱う場面ではensure_ascii=Falseを指定するのが定石です。
📚 用語解説
ensure_ascii:json.dumps()の引数の1つ。Trueだと日本語のような非ASCII文字を\uXXXX形式のエスケープシーケンスに変換し、Falseだと元の文字のまま出力します。日本語を含むデータをそのまま読める形で出力したい場合は、明示的にFalseを指定する必要があります。
このほかにも、出力を見やすく整形するための代表的なオプションがあります。
| オプション | 役割 | 指定例 |
|---|---|---|
| indent | 指定した空白数でインデント(字下げ)して見やすく整形 | indent=2 |
| sort_keys | キー(項目名)をアルファベット順に並べ替える | sort_keys=True |
| ensure_ascii | 非ASCII文字(日本語等)をエスケープするかどうか | ensure_ascii=False |
| separators | 項目間・キーと値の間の区切り文字をカスタマイズ | separators=(',', ': ') |
import json
data = {"b": 2, "a": 1, "name": "菅澤"}
print(json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False))
# {
# "a": 1,
# "b": 2,
# "name": "菅澤"
# }
日本語データを人が読める形で保存・確認したい場合は、ensure_ascii=False, indent=2, sort_keys=Trueの組み合わせがよく使われます。ログファイルや設定ファイルとして保存する際にも、この形式にしておくと後から見返しやすくなります。
05 COMMON ERRORS json.dumpsでよくあるエラーと対処法 初心者がつまずきやすい2つの代表例
エラー1:「Object of type ... is not JSON serializable」
日付データ(datetime型)や集合(set型)など、JSON形式に直接対応していないデータ型をそのままjson.dumps()に渡すと、このエラーが発生します。JSONで表現できるのは、文字列・数値・真偽値・リスト・辞書・nullといった基本的なデータ型に限られるためです。
import json
from datetime import datetime
data = {"created_at": datetime.now()}
# そのままだとエラーになる
# json.dumps(data) # TypeError: Object of type datetime is not JSON serializable
# 文字列に変換してから渡すのが基本の対処法
data_fixed = {"created_at": str(datetime.now())}
json.dumps(data_fixed, ensure_ascii=False)
📚 用語解説
シリアライズ不可能(not JSON serializable):JSONの規格上、直接変換できないデータ型(日付型、集合型、独自に定義したクラスなど)をjson.dumps()に渡した際に出るエラーメッセージ。対処法は、変換前に文字列や数値などJSONが理解できる型に変換しておくことです。
エラー2:文字化けしたファイルとして保存されてしまう
json.dumpsで作った文字列をファイルに保存する際、ファイルを開く側の文字コード指定が合っていないと文字化けが発生します。特にWindows環境では、ファイル保存時に文字コードを明示的に指定しないと、意図しない文字コードで保存されてしまうことがあります。
import json
data = {"message": "こんにちは"}
# encoding='utf-8' を明示するのが安全
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
open()関数でファイルを開く際、encoding引数を省略すると環境依存の文字コードが使われることがあります。日本語を含むJSONファイルを保存する場合は、必ずencoding='utf-8'を明示することをおすすめします。
06 WHERE JSON APPEARS 業務でJSONに実際に出会う場面 知らないうちに毎日JSONの恩恵を受けている
ここまでの内容を踏まえて、実際の業務でJSONがどのように登場するかを具体的に見ていきます。
| 場面 | 具体例 |
|---|---|
| チャット通知の設定 | Slackの「Incoming Webhook」に送るデータはJSON形式で組み立てる |
| AIツールの設定ファイル | Claude Codeなどの権限設定・MCP接続設定がJSON形式で保存される |
| 会計・請求システムとの連携 | freeeなど会計ソフトのAPIは、仕訳データをJSON形式で送受信 |
| Webサイトの記事投稿自動化 | WordPressへの投稿もJSON形式でタイトル・本文・カテゴリ等を送信 |
特に最後の「Webサイトの記事投稿自動化」は、まさにこの記事自体にも当てはまります。この記事を含む弊社ブログの記事は、Claude Codeが生成したタイトル・本文・カテゴリなどのデータをJSON形式に変換し、WordPressのAPIに送信することで自動投稿されています。
記事データを
Python辞書として
準備
json.dumpsで
JSON文字列に
変換
WordPressの
APIに
送信
JSON形式の
応答を受け取り
結果を確認
07 CLAUDE CODE 【独自】Claude CodeがAPI連携でJSONをどう扱っているか 非エンジニアが構文を覚える必要はあるのか
Claude Codeは、SlackやGoogleカレンダー、会計システムなど外部サービスと連携する際、内部でJSON形式のデータを組み立てて送受信しています。ここで気になるのが「非エンジニアの利用者も、この記事で紹介したensure_asciiやindentのような細かいオプションを覚える必要があるのか」という点です。
📚 用語解説
MCP(Model Context Protocol):AIエージェントが、Slackやカレンダー、社内システムといった外部サービスと安全に接続するための共通規格。接続の裏側ではJSON形式でリクエスト・レスポンスがやり取りされていますが、利用者はその構文を意識する必要はなく、「カレンダーの空き時間を確認して」のように日本語で指示するだけで済みます。
結論として、通常の業務利用であれば、json.dumpsのオプション名や構文を覚える必要はありません。「このデータをSlackに通知して」「この設定ファイルの中身を日本語で確認して」といった指示を出せば、Claude Codeが裏側でJSONの組み立て・変換・文字コードの調整までを代行してくれます。
この記事の目的は、非エンジニアの方にPythonのjsonモジュールを暗記してもらうことではありません。「JSONというデータ形式が裏側でやり取りされている」という前提知識があるだけで、Claude Codeとのやり取りで出てくるエラーメッセージや設定ファイルへの心理的な抵抗感がぐっと下がります。
08 GENAI CASE STUDY 【独自】GENAI社内でのJSON活用実例 Max 20xプランを全社契約する会社が、実際どう使っているか
弊社(株式会社GENAI)では、Claude Max 20xプラン(月額$200・約30,000円)を全社契約し、経営・営業・広告・経理・秘書業務・記事制作まで幅広くClaude Codeを活用しています。ここでは、JSONが実際にどのような業務で活用されているかを紹介します。
| 業務領域 | JSONが使われている場面 |
|---|---|
| ブログ記事制作 | WordPress REST APIへの記事投稿(タイトル・本文・SEO設定など) |
| 社内通知 | Slackへの日次レポート・エラー通知の自動送信 |
| 経理連携 | freee APIを使った仕訳データの一括登録 |
| 予約管理 | カレンダー連携・面談リマインドの自動送信 |
上記は弊社での活用例の紹介であり、業種・業態によって実際に連携すべきシステムや必要な設定は異なります。あくまで「JSONがどのような業務の裏側で使われているか」の参考情報としてご覧ください。
弊社では、こうした連携の実装自体もClaude Codeに任せる場面が多くあります。「Slackにこの内容を通知するスクリプトを作って」と指示するだけで、json.dumpsを使ったデータ整形からエラー処理まで含めたコードが自動生成される、という流れです。担当者はコードの中身を細部まで理解していなくても、出力結果と実際の通知内容を確認するだけで運用できています。
弊社が新しい連携(例えば新しいSaaSツールとの接続)を業務に組み込む際は、いきなり本番運用に投入せず、以下の4ステップで段階的に進めるようにしています。この進め方は、JSON連携に限らずAIツールの業務導入全般に共通する考え方です。
1つの連携だけ
試しに
組んでみる
出力データを
目視で
確認する
問題なければ
定型業務へ
組み込む
他の連携にも
同じ型を
横展開する
特に重要なのがStep 2の「目視確認」です。JSON連携は一度仕組みができてしまうと自動で動き続けるため、最初の段階で出力内容が意図通りかどうかを人間の目でしっかり確認しておくことが、後々のトラブルを防ぐ最も確実な方法だと弊社では位置づけています。
09 SHOULD YOU LEARN IT 結局、非エンジニアはjsonモジュールを学ぶべきか 「使いこなす」と「存在を知っておく」は別の話
この記事のまとめとして、非エンジニアの方がjson.dumpsのようなPythonの構文をどこまで学ぶべきかを整理します。
| 立場 | 推奨度 | 理由 |
|---|---|---|
| 自分でAPI連携のコードを書きたい開発者・エンジニア | 学ぶべき | オプションの細かい挙動を理解している方が実装が速い |
| AIツールに業務を任せたい経営者・管理職 | 概要理解で十分 | Claude Codeが構文の詳細を代行してくれる |
| SaaSの設定ファイルを時々確認する担当者 | 概要理解で十分 | 中身が読めれば十分、書く必要は少ない |
非エンジニアにとって重要なのは構文の暗記ではなく、AIに正確な指示を出せるだけの前提知識を持つことです。JSONについても、この記事で紹介した基礎知識があれば、AIツール導入時の会話やエラーメッセージへの心理的なハードルは大きく下がります。
逆にエンジニア・IT担当者の立場であれば、ensure_asciiやindentのようなオプションの挙動まで正確に把握しておくことで、Claude Codeが生成したコードの意図を素早く読み解けるようになり、レビューや微調整のスピードが上がります。立場によって「どこまで学ぶべきか」の最適解が変わる、という点も覚えておくと判断に迷いにくくなります。
10 CONCLUSION まとめ ── JSONは「怖いもの」ではなく「共通言語」 中身が分かれば、AI連携への抵抗感はなくなる
この記事では、JSONとは何かという基礎知識から、Pythonのjson.dumpsの基本的な使い方・主要オプション・よくあるエラーの対処法、そして業務でJSONに出会う具体的な場面までを解説しました。最後にポイントを振り返ります。
最も重要なメッセージをお伝えします。JSONは特別な人だけが扱う専門技術ではなく、AI活用が広がる中で誰もが少しずつ触れることになる「共通言語」です。構文を暗記する必要はありませんが、この記事で紹介した基礎知識があれば、AIツール導入時の不安はかなり軽減されるはずです。
API連携・業務自動化の設計を、AI鬼管理が一緒に整理します
SlackやfreeeなどのAPI連携を「JSONが分からないから」と諦めていませんか。
弊社の実運用ノウハウをもとに、貴社の業務に合った自動化の進め方をご提案します。
ここから先の進め方は、大きく2つあります。
自社で回せるようになりたい方は、AI鬼管理でClaude Code/Codexの使い方から業務設計・社内定着まで伴走を受けながら、社内に仕組みを作る道があります。
覚えるより任せたい方は、AIBPO by AI鬼管理でこの記事のような定型業務を丸ごと預ける道があります。総額はいまの業務コストの50%が目安、月額基本料は0円です。
どちらが合うかは、業務量と社内体制次第です。無料相談・無料適合診断で、貴社の場合はどちらが向くかからご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. JSONとCSV、業務データを扱うならどちらを使うべきですか?
A. 単純な表形式のデータ(Excelのような一覧表)であればCSVで十分です。一方、項目ごとにデータの種類が異なる、階層構造を持たせたい(例:1人の顧客に複数の注文履歴を持たせる)といった場合はJSONの方が適しています。多くのAPI連携ではJSON形式が標準になっています。
Q. json.dumpsとjson.dumpの違いは何ですか?
A. json.dumps()はPythonのデータをJSON形式の「文字列」として返す関数です。一方json.dump()(sなし)は、変換結果を直接ファイルに書き込む関数です。画面に表示したりAPIに送信したりする場合はdumps、ファイルに保存したい場合はdumpを使うのが基本です。
Q. ensure_ascii=Falseを指定し忘れるとどうなりますか?
A. データが壊れるわけではなく、日本語が\uXXXXという記号列に変換されて出力されます。プログラムで再度読み込む分には問題なく動作しますが、人間が目視で確認する際に読みにくくなるため、日本語を扱う場面ではFalseを指定するのが一般的です。
Q. Claude CodeにJSONファイルの中身を確認してもらうことはできますか?
A. できます。「このJSONファイルの中身を日本語で説明して」と指示すれば、構文を意識することなく、設定ファイルの内容や意味をかみ砕いて説明してもらえます。設定変更が必要な場合も、日本語で希望を伝えるだけで対応できます。
Q. JSONファイルが文字化けして開けない場合、どうすればいいですか?
A. 多くの場合、ファイルを開く際の文字コード指定がUTF-8になっていないことが原因です。テキストエディタの文字コード設定をUTF-8に変更して開き直すか、Claude Codeに「このファイルの文字化けを直して」と依頼すると解決できるケースが多いです。
Q. JSONの構文エラー(カンマの位置など)を自分で見つけるのは大変です。何か良い方法はありますか?
A. JSONは末尾のカンマや括弧の閉じ忘れなど、些細なミスでエラーになりやすい形式です。オンラインのJSON検証ツールを使う方法もありますが、Claude Codeに「このJSONの構文エラーを直して」と依頼すれば、該当箇所を特定して修正までしてもらえます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




