JavaScriptでオブジェクトをjsonとしてダウンロードする方法

JavaScriptでオブジェクトをjsonとしてダウンロードする方法JavaScript

今回はJavaScriptでオブジェクトをjsonファイルとしてダウンロードする方法を紹介します。

 

スポンサーリンク

オブジェクトをjsonとしてダウンロードする方法

結論、以下のように書けばokです。

<button type="button" id="button">download</button>
document.getElementById('button').addEventListener('click', () => {
  // jsonを作成
  const json = {
    name: '田中太郎',
    age: 20,
  };
  // ダウンロード
  const blob = new Blob([JSON.stringify(json)], { type: 'application/json' });
  const url = (window.URL || window.webkitURL).createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'ファイル名';
  a.click();
  a.remove();
  window.URL.revokeObjectURL(url);
});

HTMLはダウンロード用のボタンを用意しただけです。

js側ですが、new Blob()はバイナリデータを作成できるものです。JSON.stringify()してnew Blob()に渡せばjsonファイルが作成できます。

createObjectURL()で作成したjsonファイルをダウンロードするためのURLを作成します。引数にblobを渡すことでそのファイルを参照するURLを作成できます。

あとはダウンロード用に一時的な<a>タグを用意し、hrefに作成したURLを、downloadにファイル名を指定してa.click()でクリック処理を走らせます。これでjsonがダウンロードされます。また、この<a>タグは一時的なものなので終わったらremove()で削除しておきます。

またcreateObjectURL()で作成したURL(参照)はそのままにしておくとメモリ内にずっと残ってしまうため、削除するためにrevokeObjectURL()を書いておく必要があります。

 

new Blob()createObjectURL()revokeObjectURL()について詳しく知りたい方はMDNを参考にしてみてください。

>>Blob – Web API | MDN

>>URL: revokeObjectURL() 静的メソッド – Web API | MDN

>>URL: createObjectURL() 静的メソッド – Web API | MDN

 

流れとしては、

  1. new Blob()でjsonファイルを作成
  2. createObjectURL()で作成したjsonファイルを参照するためのURLを作成
  3. <a>タグクリックでダウンロード処理
  4. revokeObjectURL()でURL削除(メモリ解放)

という感じです。

普段あまり使わない関数が結構出てくるので最初はわかりにくいですが、やり方は同じなのでなれるとそこまで難しくないです。

 

まとめ

特にフロントエンド開発ではjsonをダウンロード処理する機能を作ることは割とあるのでできるようになっておくとスムーズに開発が進んでいい感じです。

ぜひ使いこなせるようになってみてください。

ZennでCSS設計の
本を書きました!

「CSS設計をちょっと勉強したけど
結局よくわからなかった…」
そんな人に読んでほしい一冊です!

読んでみる
スポンサーリンク
JavaScript
スポンサーリンク
でざなり