新着記事を見逃さないには?
このブログ一覧をブックマークし、ホームやツール一覧のガイド欄もご覧ください。記事の閲覧に登録やメール購読は不要です。
Python 標準ライブラリを使った JSON の読み書き、例外処理、数値精度、変換、CLI デバッグを実務向けに整理します。
Python 標準の json モジュールは、API サンプル、設定ファイル、データ変換の多くを処理できます。実務では、エンコーディング、エラー位置、数値精度、入力構造を明示することが重要です。
import json
raw = '{"name": "Ada", "active": true}'
try:
data = json.loads(raw)
except json.JSONDecodeError as exc:
print(f"Invalid JSON: line {exc.lineno}, column {exc.colno}: {exc.msg}")
raise完全なペイロードをログへ出すと秘密情報が漏れる可能性があります。行・列、リクエスト ID、短い説明だけを記録してください。
import json
from pathlib import Path
source = Path("input.json")
target = Path("output.json")
with source.open("r", encoding="utf-8") as handle:
data = json.load(handle)
with target.open("w", encoding="utf-8") as handle:
json.dump(data, handle, ensure_ascii=False, indent=2)
handle.write("\n")重要な設定ファイルは一時ファイルへ書き、成功後に置き換えると途中で壊れにくくなります。
import json
from decimal import Decimal
payload = json.loads('{"amount": 19.99}', parse_float=Decimal)
print(payload["amount"] * 3)Decimal はそのままでは JSON に書き戻せません。契約が10進文字列を使うのか、最小通貨単位の整数を使うのかを決め、明示的に変換します。
def normalize_users(value):
if not isinstance(value, list):
raise ValueError("Root must be an array")
result = []
for index, item in enumerate(value):
if not isinstance(item, dict):
raise ValueError(f"Item {index} must be an object")
if "id" not in item or "email" not in item:
raise ValueError(f"Item {index} is missing id or email")
result.append({
"id": str(item["id"]),
"email": str(item["email"]).strip().lower(),
})
return result複雑な契約には JSON Schema と保守されている検証ライブラリを使います。構文検証と契約検証は別の問題です。
ネストした JSON を CSV や DB 行へ変換する場合、配列、欠落、null をどう表すか決めてください。
def order_row(order):
customer = order.get("customer") or {}
return {
"order_id": order.get("id"),
"customer_email": customer.get("email"),
"item_count": len(order.get("items") or []),
"status": order.get("status", "unknown"),
}入力と期待出力をテストとして保存すると、変換時の判断を後から確認できます。
python -m json.tool input.json
python -m json.tool --sort-keys input.json視覚的に確認する場合は JSON Beautifier や JSON Tree Viewer も利用できます。不要な秘密情報は事前に除去してください。
null を区別する。Decimal、文字列、最小単位整数で扱う。全オプションは Python 公式の json ドキュメントで確認できます。まず標準ライブラリを使い、契約に必要なときだけ Schema 検証を追加しましょう。
開発者に最高のJSON処理ツールを提供することに専念
さらに多くの投稿が近日公開予定...
ブログに戻る更新の追い方、扱うトピック、リクエストについて。
このブログ一覧をブックマークし、ホームやツール一覧のガイド欄もご覧ください。記事の閲覧に登録やメール購読は不要です。
JSON の検証・整形・変換・デバッグの流れと JSON Work の更新で、サイト上の無料ツールがブラウザ内でできることと対応づけています。
はい。About の連絡先や GitHub からどうぞ。実務の統合やデバッグに直結するテーマを優先しています。