Json To Csv LogoJson To Csv

VS CodeでJSONをCSVに変換する方法:クリックからワンキー操作まで4つの方法(2026年ガイド)

VS Codeには組み込みのJSONからCSVへのコマンドがありません。しかし正直な4つの方法があります。ワンクリックの拡張機能、jqやPythonを使った統合ターミナル、保存したtasks.jsonタスク、セットアップなしで済むオンラインコンバーターです。それぞれを実際のネストしたデータでテストしました。

更新日: 2026-10-1510 分で読めます

まず正直な前提:VS Codeはエディタであり、コンバーターではありません

メニューを探しても見つからないのは、見落としではありません。VS Codeには「CSVに変換」コマンドも、JSONのエクスポートメニューも、.jsonファイルを.csvファイルに変える組み込みの仕組みもありません。これは見落としではなく、VS Codeがコードエディタであり、形式変換は拡張機能やターミナル、タスクに任せる類の仕事だからです。これを受け入れれば、問いは「ボタンはどこか」から「このファイルには4つの方法のどれが合うか」に変わります。

4つの方法を簡単にまとめます。エディタ内でワンクリック変換できる拡張機能、jqやPythonで完全に制御できる統合ターミナル、毎週繰り返す変換のためのtasks.jsonタスク、セットアップなしで済ませたい1回だけのファイルのためのオンラインコンバーターです。それぞれが1つのことにおいて本当に最適であり、それぞれに他の方法が回避できる失敗パターンがあります。このガイドでは4つすべてを扱い、実際のネストしたテストファイルで得た正確なコマンドと正確な出力を示します。そのテストファイルは、ネストした顧客オブジェクト、アイテムのリスト、nullの合計を含む3件の注文のJSONドキュメントです。

方法1:JSON2CSV拡張機能(1つのファイルなら最速)

今すぐ1つのファイルを変換したいなら、拡張機能が最も手間の少ない方法です。インストールすべきは、Visual Studio Code Marketplaceにあるkhaeransori氏のJSON2CSVです。READMEには手順が素直に書かれています。インストールし、JSONファイルを開き、Ctrl+Shift+P(macOSではCmd+Shift+P)でコマンド パレットを開き、「Convert JSON to CSV」と入力すると、変換されたCSVが新しいエディタタブで開き、Ctrl+Sで保存できます。逆方向のCSVからJSONへの変換も、同じパレットから行えます。

インストールは1分もかかりません。Ctrl+Shift+Xで拡張機能ビューを開き、json2csvで検索し、khaeransori氏が公開したエントリの「インストール」をクリックします。拡張機能のインストールを安全に保つ2つの習慣は、ここでも他の場所と同じく当てはまります。インストールをクリックする前に公開者名が一致するか確認すること(人気ツールには名前の似たコピー品の拡張機能が存在します)、ダウンロード数と最近の更新日を一瞥することです。拡張機能はあなたのマシン上でコードを実行し、ファイルにアクセスします。ですから、公開者を確認する一手間は、どんな機能一覧よりも価値があります。

JSON2CSVが合わない場合、2つの代替手段があります。DataMorph(Data Format Converterとして掲載)は、右クリックのコンテキストメニューやコマンド パレットからCSV、JSON、Excel間で変換でき、複数ファイルの一括変換とネストしたJSONのスマートなフラット化をうたっています。Algae Dataはより軽量な選択肢です。JSONファイルを開き、コマンド パレットから「Algae: JSON to CSV」を実行すると、結果が新しいエディタウィンドウで開きます。3つとも公開リストを持つ本物のMarketplace拡張機能です。説明文の派手さではなく、自分のファイルに合う機能一覧で選んでください。

拡張機能の方法の正直な限界は、データをサードパーティのツールに委ねることであり、フラット化の選択はそのツール独自のものになることです。JSONが深くネストしている場合や列の順序が重要な場合は、以下で紹介するターミナルの方法の方が両方を明示的に制御できます。JSONを毎週変換する開発者が最終的に方法2や方法3に行き着くのは、そのためです。

方法2:統合ターミナル。フラットなデータにはjq、ネストしたデータにはPython

統合ターミナルは、この作業におけるVS Codeの最大の強みです。Ctrl+`(バッククォートキー)を押すと、エディタの中にフル機能のシェルが開き、プロジェクトフォルダにいて、ファイルも横で開いたままです。ウィンドウの切り替えもアップロードも不要で、以下のコマンドはすべて再実行できます。ほぼすべてのファイルをカバーする2つのツールがあります。素早いフラット変換のためのjqと、ネストしたものすべてに対応するPythonです。

まずはjq、JSON用のコマンドラインプロセッサです。JSONがフラットなオブジェクトの配列で、ネストしたオブジェクトも行の中の配列もない場合、1つのコマンドで変換全体が完了します。すべての行にわたってすべてのキーを集めてヘッダーにし、各行をCSVとして出力します。

jq:フラットなJSON配列をCSVに変換(検証済み)
jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' flat.json > flat.csv

2件の注文(id、name、total)のフラットなテストファイルでは、このコマンドは正確に次の出力を生みました。ヘッダー行id,name,totalの後に、1,"Ana",24.5と2,"Bo",9.0が続きます。きれいで、正確で、瞬時です。しかし同じコマンドをネストしたデータに試すと、jqは正直に止まります。ネストした3件の注文のテストファイルでは「object is not valid in a csv row」というエラーになりました。customerのようなネストしたオブジェクトには、住めるCSVセルが1つもないからです。このエラーはjqが真実を伝えているのです。フラットなツールにはフラットな行が必要です。

方法2:統合ターミナル。フラットなデータにはjq、ネストしたデータにはPython(続き)

ネストしたJSONでも、列を明示的に指定すればjqは使えます。このレシピは、欲しいフィールドをパスで指定して取り出し、itemsリストを「; 」で1つのセルに結合し、CSVを書き出します。

jq:列を明示的に指定したネストJSON(検証済み)
jq -r '["id","name","city","items","total"], (.[] | [.id, .customer.name, .customer.city, (.items | join("; ")), .total]) | @csv' orders.json > orders.csv

ネストしたテストファイルに実行すると、ヘッダー"id","name","city","items","total"と3行が出力されました。1,"Ana","Oslo","book; pen",24.5や、itemsリストが空で合計がnullの注文の3,"Cy","Trondheim","",などが含まれます。知っておく価値のあるjqの挙動が2つあります。@csvはすべての文字列を引用符で包みます(正しいですが、やや騒がしいです)。そしてnullは、文字列の文脈に置かれたときにのみ空のフィールドになります。3行目の空のitemsセルは空のリストに対するjoinから生まれ、nullの合計は行の末尾に空のフィールドとして出力されました。列を明示的に指定すれば、列の順序、ネストのパス、各リストが何になるかを自分で決められます。

方法2:統合ターミナル。フラットなデータにはjq、ネストしたデータにはPython(続き)

すべての列を手作業で指定するのが面倒になったら、Pythonの方が適したツールです。この小さなスクリプトをconvert.pyとしてプロジェクトに保存してください。ネストしたオブジェクトをドット記法の列(customer.name)にフラット化し、プレーンなリストを「; 」で結合し、nullを空のセルに変え、標準のcsvモジュールによる引用符処理で正しいCSVを書き出します。

convert.py:JSONをCSVに変換するフラット化スクリプト(検証済み)
import json, csv, sys

def flatten(obj, prefix=""):
    out = {}
    if isinstance(obj, dict):
        for k, v in obj.items():
            key = f"{prefix}.{k}" if prefix else k
            out.update(flatten(v, key))
    elif isinstance(obj, list):
        out[prefix] = "; ".join(str(x) for x in obj if not isinstance(x, (dict, list))) if obj else ""
        for i, v in enumerate(obj):
            if isinstance(v, (dict, list)):
                out.update(flatten(v, f"{prefix}[{i}]"))
    else:
        out[prefix] = "" if obj is None else obj
    return out

rows = json.load(open(sys.argv[1]))
if isinstance(rows, dict):
    rows = [rows]
flat = [flatten(r) for r in rows]
cols = sorted({k for r in flat for k in r})
with open(sys.argv[2], "w", newline="", encoding="utf-8") as f:
    w = csv.DictWriter(f, fieldnames=cols)
    w.writeheader()
    w.writerows(flat)
print(f"wrote {sys.argv[2]}: {len(flat)} rows, {len(cols)} columns")

統合ターミナルからpython3 convert.py orders.json orders.csvで実行します。同じネストしたテストファイルでは「wrote orders.csv: 3 rows, 5 columns」と出力され、ヘッダーはcustomer.city,customer.name,id,items,totalとなり、行はOslo,Ana,1,book; pen,24.5、Bergen,Bo,2,mug,9.0、Trondheim,Cy,3,,となりました。nullの合計と空のitemsリストは、どちらもフラット化ルールの約束通りに空のセルになりました。このスクリプトは、実際に遭遇する2つの形に対応します。トップレベルが配列の場合(通常のケース)と、トップレベルが単一のオブジェクトの場合(1行のテーブルに包まれます)です。両方のjqレシピとこのスクリプトは、公開前にビルドマシンで実行されており、上記の出力はイラストではなく実際の出力です。

方法3:タスクとして保存する。毎回ワンキー操作で

JSONファイルを月に1回以上変換するなら、コマンドを打ち直すのをやめて、VS Codeのタスクとして変換を保存しましょう。タスクは.vscode/tasks.json内の名前付きコマンドであり、「ターミナル」→「タスクの実行」から、またはキーボードショートカットのCtrl+Shift+Bで実行できます。上記のPythonの方法を、開いているファイルに対するワンキー操作に変えてくれます。

プロジェクトに.vscode/tasks.jsonを次の内容で作成します(このファイルは公開前に有効なJSONとして解析できることを確認済みです)。

.vscode/tasks.json:開いているファイルを変換する(解析確認済み)
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JSON to CSV: convert current file",
      "type": "shell",
      "command": "python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv",
      "problemMatcher": []
    }
  ]
}

仕組みはこうです。${file}はアクティブなエディタで開いているファイル、${fileDirname}はそのフォルダ、${fileBasenameNoExtension}は.jsonを除いた名前です。つまりorders.jsonを開いた状態では、タスクはそれに対してpython3 convert.pyを実行し、隣にorders.csvを書き出します。任意のJSONファイルを開き、Ctrl+Shift+Bを押してタスクを選ぶと、CSVがソースの隣に現れます。同じパターンはjqレシピにも使えます。commandをjqの行に置き換え、入力として${file}を使います。1つ注意点があります。タスクはあなたのユーザー権限でシェルコマンドを実行します。ですから、信頼できるソースからのタスクだけを追加してください。拡張機能と同じルールを設定に適用するのです。

タスクの方法は、Pythonスクリプトがjqよりも真価を発揮する場面でもあります。1つのスクリプトと1つのタスクで、フラットなファイル、ネストしたファイル、単一のオブジェクト、配列のすべてに対応でき、ファイルごとにコマンドを編集する必要がありません。毎週同じAPIからのエクスポートを変換するなら、この方法が報われます。

方法4:VS Codeを完全に離れてオンラインコンバーターを使うべきとき

エディタを離れるのが正しい選択になる状況が3つあります。1つ目は、拡張機能をインストールできず、jqもPythonも手元にないマシンでの1回だけのファイルです。借りたノートパソコン、ロックダウンされた職場のマシン、Chromebookなどが当てはまります。2つ目は、ネストが厄介で、明示的なjqパスを書くのが作業に感じられるJSONです。フラット化トグル付きのオンラインコンバーターなら、ツリー全体をワンクリックで列に変え、ダウンロード前にプレビューを確認できます。3つ目は共有です。CSVをVS Codeを使わない同僚に渡すなら、ブラウザで変換して完成したファイルを送る方が、自分のツール構成を説明するより簡単です。

このサイトのオンラインの方法は、すべてブラウザ内で動作します。JSONを貼り付けるかファイルをアップロードすると、変換はサーバーへのアップロードなしにクライアントサイドで行われ、ネストしたデータはドット記法の列にフラット化され、ダウンロードはプレーンなUTF-8です。VS Codeユーザーにとって正直な比較はこうです。オンラインコンバーターは、タスクの再現性と引き換えに、セットアップなしと即座のプレビューを提供します。変換が繰り返されるならエディタの方法を使い、繰り返されないならブラウザの方法を使いましょう。

VS Code内で結果を確認する(そして生のテキストこそが真実である理由)

どの方法を選んでも、CSVを信頼する前にVS Codeで確認しましょう。VS Codeは生のファイル、つまり実際のカンマ、引用符、改行を見せます。一方、表計算ソフトが見せるのは、その解釈です。両者が食い違えば、生のテキストが真実であり、表計算ソフトが推測しているのです。確認を楽にする拡張機能が2つあります。Edit CSVはCSVをエディタ内の編集可能な表計算ソフト風テーブルとして開き、Rainbow CSVは各列を異なる色で着色するので、ずれた行が視覚的に目立ちます。

最も多い「CSVが壊れている」という報告は、Excelで1つの長い列として開かれるファイルです。10回中9回はファイルは正常です。Excelが区切り文字を誤って推測した(セミコロンのファイルをカンマとして開いた)か、エンコーディングを誤って推測したのです。まずVS Codeでファイルを開きましょう。生のテキストでカンマと引用符が正しく見えるなら、ファイルは正しく、修正すべきはインポート側です(Excelでは「データ」→「テキスト/CSVから」で区切り文字と65001 UTF-8を選びます)。VS Code下部のステータスバーにはファイルのエンコーディングも表示されます。ファイルが文字化けして見えるなら、「ファイル」→「エンコーディングを指定して保存」→「UTF-8」で正規化し、特定のWindowsツールがBOMを要求する場合にのみ「UTF-8 with BOM」で保存してください。

トラブルシューティング:VS Codeユーザーが実際に遭遇する4つのエラー

無効なJSONは、変換前に指摘されます。ファイルに赤い波線がある場合や「問題」パネルにエラーが並んでいる場合は、まずそれらを修正してください。壊れたJSONを変換ツールは受け付けません。VS Code特有の罠が2つあります。設定形式のファイルはコメントと末尾カンマを許容します(それはJSONではなくJSONCです)。そして、最後の要素の後の余分な末尾カンマは、最も多い単一の構文エラーです。変換前にコメントと末尾カンマを取り除いてください。VS Code内蔵のJSON言語サービスが、たいてい正確な行を指し示してくれます。

配列ではなく単一のオブジェクト。APIはしばしば、素の配列ではなく{"data": [...], "total": 2}や単独の{...}を返すことがあります。上記のPythonスクリプトは、単独のオブジェクトを1行に包んで処理します。ラッパーオブジェクトの場合は、その中の配列を取り出してください(jqでは.data | ...、Pythonではrows = json.load(...)["data"])。そうしないと、コンバーターは配列全体を1つのセルに文字列化した1行を返してしまいます。

「消えた」ように見えるネストしたデータ。フラット化は常に選択を行います。オブジェクトのリストには1セルでの表現がなく、上記のPythonスクリプトはプレーンな値のリストだけを結合し、オブジェクトのリストはインデックス付きキー(items[0].name)で再帰的に展開します。リストにオブジェクトが含まれていて出力がおかしく見えるなら、それはデータの損失ではなく、フラット化ルールが現れているのです。リストを結合するか、行に展開するか、落とすかを列ごとに決め、デフォルトを黙って受け入れるのではなく、スクリプトに明記しましょう。

巨大なファイル。エディタ内で200MBのJSONファイルを変換する拡張機能はUIをハングさせることがあります。ターミナルの方法の方がストリーミングに優れており、特にjqはプレビューを読み込むことなく大きなファイルを処理できます。VS Codeが遅く感じられるなら、それがターミナルを使う合図です。コマンドラインでjqやPythonを使い、エディタには結果だけを表示させましょう。

どの方法を選ぶべきか?

1つのファイル、今すぐ、セットアップなしなら、JSON2CSV拡張機能です。インストールして、コマンド パレットで実行し、新しいタブを保存します。毎週変換するファイルなら、Pythonスクリプトとtasks.jsonタスクです。ワンキー操作で、毎回同じ結果が得られます。素早いフラットなファイルで、ターミナルが好きなら、jqのワンライナーです。ロックダウンされたマシンでの1回だけのファイルや、コミットする前にプレビューしたい厄介なネストなら、オンラインコンバーターです。これらのどれも「唯一の」VS Codeの方法ではありません。VS Codeは意図的に単一の組み込み方法を持たないからです。エディタは部品を提供し、正しい組み合わせは、変換の頻度とデータのネストの深さに合うものです。

無料のJSON→CSVコンバーターを開く

関連ガイド

よくある質問

VS CodeでJSONをCSVに変換するにはどうすればいいですか?

VS Codeには組み込みのコンバーターがありません。ですから4つの方法のいずれかを追加します。JSON2CSV拡張機能をインストールしてコマンド パレットから「Convert JSON to CSV」を実行する方法、統合ターミナルでjq(フラットなデータ)やPythonスクリプト(ネストしたデータ)を使う方法、ワンキー操作で繰り返せるようtasks.jsonタスクとして変換を保存する方法、セットアップなしの1回だけのファイルのためにJSONを無料のオンラインコンバーターに貼り付ける方法です。

JSONからCSVへの変換に最適なVS Code拡張機能は何ですか?

khaeransori氏のJSON2CSVが最も直接的です。拡張機能ビューからインストールし、JSONファイルを開き、コマンド パレットから「Convert JSON to CSV」を実行すると、CSVが新しいタブで開きます。DataMorph(Data Format Converter)はExcel変換とバッチ処理を追加し、Algae Dataはより軽量な代替手段です。拡張機能をインストールする前には、必ず公開者名を確認してください。

VS Codeで拡張機能なしにJSONをCSVに変換できますか?

はい。統合ターミナル(Ctrl+`)を使います。フラットなJSON配列なら、jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' file.json > file.csvです。ネストしたJSONなら、列パスを明示的に指定したjqか、ネストしたオブジェクトをドット記法の列にフラット化する小さなPythonスクリプトを使います。両方の方法は、このガイドのために実際のデータでテスト済みです。

jqが「object is not valid in a csv row」で失敗するのはなぜですか?

行にネストしたオブジェクトや配列が含まれており、CSVの行はフラットな値しか保持できないからです。汎用的なjqの@csvレシピはフラットな行にしか使えません。列を明示的に指定して修正します(jq -r '["id","name",...], (.[] | [.id, .customer.name, ...]) | @csv')。または、ネストしたオブジェクトをドット記法の列に変えるPythonスクリプトで先にフラット化します。

VS CodeでJSONからCSVへの変換を自動化するにはどうすればいいですか?

.vscode/tasks.jsonにタスクを保存し、開いているファイルに対して変換コマンドを実行させます。たとえばpython3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csvです。任意のJSONファイルを開いた状態でCtrl+Shift+B(「ターミナル」→「タスクの実行」)を押すと、CSVが毎回ソースファイルの隣に書き出され、打ち直しは不要です。

VS Codeから作ったCSVがExcelで1列として開かれるのはなぜですか?

たいていはファイルは正常で、Excelが区切り文字やエンコーディングを誤って推測しています。まずVS Codeで生のテキストを確認してください。カンマと引用符がそこで正しく見えるなら、ファイルは正しいのです。ファイルをダブルクリックするのではなく、Excelで「データ」→「テキスト/CSVから」で再インポートし、正しい区切り文字と65001(UTF-8)エンコーディングを選びましょう。

VS CodeでJSONCやコメント付きのJSONをCSVに変換できますか?

直接はできません。コメントと末尾カンマはJSONCであり、JSONではありません。どのコンバーターも受け付けません。まずコメントと末尾カンマを取り除いてください(VS Codeの「問題」パネルが正確な行を指摘します)。その後、きれいなJSONを変換します。同じことは、設計上JSONCである設定ファイルや.code-workspaceファイルにも当てはまります。

1回だけのファイルならブラウザで変換できます。拡張機能は不要です

JSONを貼り付けるかファイルをアップロードするだけです。ネストしたデータはきれいな列にフラット化され、区切り文字と引用符は自動で処理され、ダウンロードはプレーンなUTF-8です。無料、登録不要、すべてブラウザ内で動作します。

JSON→CSVコンバーターを開く
ガイド一覧