FIRST CH TOOLS / 39 CSV ⇄ JSON
CSV/TSV ⇄ JSON 相互変換
表計算ソフトから書き出したCSV・TSVをJSONの配列へ、APIから受け取ったJSONを表へ、どちらの欄に貼っても即時に変換します。区切り文字は自動で判定し、stock.数量 のような列名は入れ子のオブジェクトとして読み書きします。0123 のような先頭の0や大きなIDは、桁が変わらないよう文字列のまま保ちます。
どちらに入力しても即時変換されます
貼り付けた内容がブラウザの外へ出ることはありません(CSVの読み取りもJSONの解析も、外部ライブラリを使わずこのページの中だけで動いています)。ファイルの読み込みも端末内で読むだけで、アップロードは行いません。URLパラメータで直接呼び出せます: /csv-json/?csv=a%2Cb%0A1%2C2 / /csv-json/?json=%5B%7B%22a%22%3A1%7D%5D&delim=tab
表とJSONを行き来するときに壊れやすいところ
区切り文字はカンマとは限らない
id;name;price ← ヨーロッパ圏のExcelはセミコロンで書き出す id name price ← 表計算ソフトからのコピーはタブ区切り
CSVという名前でも中身がセミコロン区切りであることは珍しくありません。小数点にカンマを使う地域(ドイツ・フランスなど)のExcelは、区切りをセミコロンにします。このツールは先頭20行を見て、どの記号が各行で同じ個数だけ現れるかで区切りを推定し、判定結果を表示します。違っていれば上の指定で固定してください。
セルの中の引用符は "" と2つ重ねる
1,"チェア ""Oslo""",39800 ← 値は チェア "Oslo" 2,"住所は東京都,港区",1000 ← 引用符の中のカンマは区切りではない 3,"1行目 2行目",500 ← 引用符の中の改行はセルの中身
RFC 4180 では、区切り記号・引用符・改行を含む値は "…" で囲み、値の中の " は "" と重ねます。バックスラッシュでのエスケープ(\")はCSVの書き方ではありません。このツールは書き出すときもこの規則に従い、必要なセルだけを囲みます。
先頭の0は数値にすると消える
zip,tel,code 0150001,09012345678,0123 ← 数値にすると 150001 / 9012345678 / 123
郵便番号・電話番号・伝票番号・型番のように先頭の0に意味がある値は、数値に読み替えてはいけません。このツールは「数値にして文字列へ戻したとき元の表記に戻るか」で判定し、戻らない値は文字列のままにします。ハイフン入りの電話番号や +81 始まりも同じ扱いです。
大きなIDは桁が落ちる
id 12345678901234567890 ← JSONの数値にすると 12345678901234567000
JSONの数値は倍精度浮動小数点数で、正確に表せるのは2の53乗(約9,007兆)までです。SnowflakeのIDやマイナンバーのような長い数字はこれを超えます。このツールは超える値を文字列のまま残し、件数を指摘に出します。
Excelは日付や指数に勝手に変換する
SEP1 → 1-Sep 遺伝子名がExcelで日付になる有名な事故 1E5 → 100000 指数表記とみなされる 03-04 → 3月4日
これはCSVではなくExcelで開いた瞬間に起きる変換で、保存し直すと元の表記は失われます。CSVを配る側は、受け取り手が「データ」タブの「テキストファイル(またはCSV)から」でインポートし、対象列を「文字列」に指定する前提で渡すのが安全です。
= で始まるセルは数式として実行されうる
name,note 山田,"=1+1" ← 表計算ソフトで開くと 2 になる 田中,"=HYPERLINK(...)" ← 外部への通信を促す形にもできる
フォームの入力をそのままCSVにすると、=・+・-・@ で始まる値が数式として解釈されます(CSVインジェクション)。このツールは該当するセルの件数を指摘に出します。外部から受け取ったCSVを開く前に確認してください。
入れ子のJSONは、そのままでは表にできない
{"id":1,"stock":{"city":"東京","qty":42},"tags":["照明","真鍮"]}
id,stock.city,stock.qty,tags.0,tags.1
1,東京,42,照明,真鍮
表は縦横の2次元しか表せないので、入れ子は列名を 親.子 の形へ平らにして並べます。配列は tags.0 tags.1 と番号を振ります。逆向きも同じ規則なので、CSVへ出してJSONへ戻すと元の構造に復元されます。「a.b の列を入れ子にする」を外すと、入れ子はJSONの文字列としてセル1つに入ります。
オブジェクトごとにキーが違うと列が欠ける
[{"id":1,"name":"A"},{"id":2,"memo":"後から足した項目"}]
id,name,memo
1,A,
2,,後から足した項目
JSONの配列は要素ごとに違うキーを持てますが、表にすると全要素のキーの和集合が列になり、持っていない項目は空欄になります。このツールは列の食い違いがあった件数を指摘に出します。
BOMと文字コード
EF BB BF id,name… ← ExcelがUTF-8で書き出すCSVの先頭
ExcelはBOM(EF BB BF)が無いUTF-8のCSVをShift_JISとして開こうとして文字化けさせます。日本語を含むCSVをExcelで開いてもらうときは「CSVの先頭にBOMを付ける」を有効にしてください。読み込み時のBOMは自動で取り除きます。Shift_JIS そのものの読み書きは 文字コード・改行コード変換 を使ってください。
列名の重複と空の見出し
id,name,name, ← 同じ列名と、名前のない列 1,A,B,C
JSONのオブジェクトは同じキーを2つ持てないので、後の列が黙って前の列を上書きします。このツールは2つ目以降に name_2 のように連番を付けて残し、指摘に出します。空の見出しには column4 のような仮の名前を付けます。
対応している範囲: RFC 4180 のCSV(引用符・"" エスケープ・セル内改行・CRLF/LF)・タブ/セミコロン/パイプ区切り・BOM・見出しなし・a.b と a[0] の入れ子・JSONの配列/単体のオブジェクト/配列を包んだオブジェクト・1行1件のJSON Lines。
How to Use
- どちらかの欄に貼るCSV・TSVを左に貼れば右にJSONが、JSONを右に貼れば左にCSVが出ます。ファイルをドラッグ&ドロップしても読み込めます。
- 読み方を選ぶ区切り文字は自動判定しますが、固定もできます。見出し行の有無・入れ子の展開・型の読み替え・BOMの有無を切り替えてください。
- 結果を確かめてコピーする列数の不揃い・列名の重複・桁落ちする数値・数式として実行されうるセルは、チェック結果に出ます。
About This Tool
CSVとJSONは同じ表形式のデータを別の書き方で表したものです。CSVは1行1レコードで表計算ソフトがそのまま開ける代わりに、入れ子や型を持ちません。JSONは構造と型を持てる代わりに、そのままでは表として眺められません。手元のデータを「Excelで見たい」「APIに投げたい」「テストデータとして読み込みたい」と行き来させるための道具です。
入れ子は列名で表します。stock.qty という列は {"stock":{"qty":…}} に、tags.0 tags.1 は配列になります。tags[0] という書き方も同じ意味に読みます。逆向きの変換でも同じ規則で平らにするため、CSVへ出してJSONへ戻せば元の構造に戻ります。同じ名前がスカラーで埋まっていて入れ子にできないときは、その列だけ平らなキーのまま残して指摘に出します。
型の読み替えは「元の表記に戻せるか」で決めます。数値らしく見えても、0123・+1・1.50・2の53乗を超える整数は、数値にすると表記や桁が変わってしまいます。このツールは変換候補を一度数値にして文字列へ戻し、元と1文字も違わないときだけ数値として書き出します。郵便番号・電話番号・伝票番号・バージョン番号が壊れないのはこのためです。true / false / null も読み替えますが、まるごと文字列で扱いたいときは「数値・true / false・null を読み替える」を外してください。
Excelが書いたCSVをそのまま読みます。BOM付きのUTF-8、CRLFの改行、引用符で囲まれたセル内改行、"" によるエスケープに対応しています。引用符の対応が壊れている行も、文字として読み進めたうえで「何行目が怪しいか」を指摘します。厳密さを理由に読めないより、読んだうえで直せる場所を教える方が役に立つと考えています。
JSONの構文エラーは行と桁で示します。ブラウザの JSON.parse が出すメッセージは実装ごとに文面が違うため、ここでは自前で読み進めています。エラー行の前後2行を抜き出し、^ で桁を指します。配列でないJSON(1件のオブジェクト、{"data":[…]} のように配列を包んだもの)や、1行1件のJSON Lines も受け取れます。
似た道具との使い分け: 設定ファイルの読み替えは JSON ⇄ YAML、表をドキュメントに貼るための整形は Markdownテーブル整形、そもそものダミーデータ作りは テストデータ生成、文字コードそのものの変換は 文字コード・改行コード変換 にあります。このページは手持ちのデータをそのまま形式だけ移し替えるためのものです。
From AI Agents
この変換ロジックは、MCP(Model Context Protocol)サーバー @first-ch/tools-mcp の csv_convert ツールとしても提供しており、ブラウザを使わずAIエージェントから直接呼び出せます。ファイルパスを渡して読み書きもできるので、手元のCSVをJSONへ直してから処理する、といった前準備をそのまま任せられます。導入方法の詳細は AIエージェントからの使い方 を参照してください。
導入
claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp
呼び出し例
# CSV を JSON の配列へ(区切りは自動判定・型も読み替える) csv_convert(text="id,name\n1,佐藤\n2,鈴木") # 手元のCSVファイルを読んでJSONへ書き出す csv_convert(path="/tmp/orders.csv", outputPath="/tmp/orders.json") # JSON を Excel 向けのCSVへ(BOM付き・CRLF) csv_convert(direction="json2csv", path="/tmp/items.json", outputPath="/tmp/items.csv", bom=true, newline="crlf") # TSV を見出しなしで読み、型の読み替えもしない csv_convert(text="1\t2\n3\t4", delimiter="tab", header=false, types=false)
Other Tools
- 01画像→WebP一括変換WebP Converter
- 02白背景の透過White BG Remover
- 03コントラスト比チェッカーContrast Checker
- 04文字数カウントCharacter Counter
- 05llms.txt ジェネレーターllms.txt Generator
- 06JSON-LD構造化データ生成JSON-LD Generator
- 07Markdown→PDF変換MD → PDF
- 08OGPメタタグ生成ウィザードOGP Wizard
- 09faviconジェネレーターFavicon Generator
- 10TikTok投稿ツールTikTok Publisher
- 11文字コード・改行コード変換Encoding Converter
- 12画像→AVIF変換+picture生成AVIF Converter
- 13テストデータ生成Test Data Generator
- 14Marp Markdown→スライドMarp Slides
- 15テキスト・コード差分チェッカーDiff Checker
- 16Cron式ビジュアル解説&発火日時Cron Explainer
- 17Base64 & Data URI変換Base64 & Data URI
- 18URLパラメータ分解・UTMタグ編集URL Parameters
- 19HTMLエンティティ・特殊文字変換HTML Escape
- 20JSON ⇄ YAML 相互変換&整形JSON ⇄ YAML
- 21PX ⇄ REM / EM 単位変換&スケール表PX ⇄ REM / EM
- 22Colorコード変換&アルファ透過Color Converter
- 23MD5 / SHA-256 ハッシュ生成Hash Generator
- 24JWTデコーダー&有効期限チェッカーJWT Decoder
- 25User-Agent解析&デバイス判定User-Agent Parser
- 26UUID (v4) & ULID 一括生成UUID & ULID Generator
- 27アスペクト比計算&レスポンシブサイズAspect Ratio Calculator
- 28Markdownテーブル整形&CSV/TSV変換Markdown Table
- 29SQLクエリフォーマッター&整形SQL Formatter
- 30QRコード生成QR Code Generator
- 31正規表現テスターRegex Tester
- 32UNIXタイムスタンプ⇄日時変換Unix Time Converter
- 33新規タブメモ帳 Chrome拡張New Tab Memo
- 34画像リサイズ&クロップImage Resizer
- 35EXIF情報の確認&除去EXIF Viewer
- 36robots.txt ジェネレーターrobots.txt Generator
- 37安全なパスワード生成Password Generator
- 38文字列ケース変換Case Converter