Written by Kasumi

Vue.jsでjsonデータを読み込む方法【axiosを使おう】

Vue.jsでjsonファイルを取得、出力する方法を知りたい。

本記事ではこのような悩みを解決。

実装例を元に解説します。

jsonファイルを用意

[
    {
        "name": "佐藤",
        "school_year": 1,
        "test": {
            "japanese": 30,
            "english": 60
        }
    },
    {
        "name": "鈴木",
        "school_year": 2,
        "test": {
            "japanese": 40,
            "english": 70
        }
    },
    {
        "name": "田中",
        "school_year": 3,
        "test": {
            "japanese": 50,
            "english": 80
        }
    }
]

まずはjsonファイルを用意します。

本記事では上記のようなデータが入ってるjsonを読み込みます。

CDNを読み込む

<!-- Vue -->
<script src="https://unpkg.com/vue@next"></script>
<!-- axios -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

本記事ではCDNで実装します。

上記scriptを実装環境に読み込みます。

axiosはサーバーからデータを取得したい時に便利なライブラリです。

jsonデータを簡単に取得できます。

Vue.jsとaxiosを定義

const app = Vue.createApp({
      data() {
        return {
          <!-- 初期値 -->
          items: [],
        };
      },
      mounted() {
        axios
          .get("jsonファイルへのパス")
          .then((response) => (this.items = response.data))
          .catch((error) => console.log(error));
      },
    });
app.mount("#app");

Vue.jsとaxiosでjsonデータを読み込むコード例です。

dataメソッドに初期値を設定。

mountedメソッド内でaxiosを定義。

getメソッドの引数にjsonファイルへのパスを記述します。

thenメソッドで読み込みに成功したら、初期値(本記事ではitems)に配列としてjsonデータを渡します。

catchメソッドで読み込みに失敗したらコンソールにerrorを出力します。

HTMLでjsonの出力先を記述

<div id="app">
  <ul>
    <li v-for="(item, index) in items" v-bind:key="item.id">
      私の名前は{{ item.name }}です。<br>
      学年は{{item.school_year}}年です。<br>
      国語の点数は{{item.test.japanese}}点。
      英語の点数は{{item.test.english}}点です。
    </li>
  </ul>
</div>
  <!-- 出力結果
  私の名前は佐藤です。
  学年は1年です。
  国語の点数は30点。 英語の点数は60点です。

  私の名前は鈴木です。
  学年は2年です。
  国語の点数は40点。 英語の点数は70点です。

  私の名前は田中です。
  学年は3年です。
  国語の点数は50点。 英語の点数は80点です。 -->

Vueのインスタンス内でjsonのデータを出力・展開します。

v-forディレクティブを使い、繰り返し処理を実行。

jsonデータが入ってる配列(items)を展開します。

以上でjsonデータの読み込み・出力の完了です。

ローカルだとjsonを読み込まない?

chromeブラウザのコンソールにCORSエラーがでてjsonを読み込まない。。

CORSエラーは静的ファイルなどを外部から読み込む際にエラーになります。

ローカルで実装したい場合はローカルサーバー環境を用意。

上記環境にjsonファイルを移動・読み込むとエラーが解消されるかもしれません。

まとめ

Vue.jsでaxiosを使いjsonデータを読み込む方法について紹介しました。

以上で解説を終わります。

目次

関連記事

Vue.js

Vue.jsですべてのページ要素が読み込み完了した後に任意のイベントを実行する方法

2022.09.15
9867
Vue.js

Vue.jsでタブ切り替えを実装する方法【簡単】

2022.09.03
7737
Vue.js

vue-scrolltoのスムーススクロールで固定ヘッダーの高さ分アンカー位置がズレる(隠れる)【解決方法】

2022.09.05
2046
Vue.js

Vue.jsで指定回数、html要素をループ処理させる方法【v-forディレクティブを使おう】

2022.09.13
5349