
mockのJSONデータを取得して画面に表示させるにはどうすればいいんだろう….
こんな疑問を解決します。
やること
angularのassets/mockにJSONデータを作成し、そのデータを任意のページで取得して画面に表示させること。


休日で空いた時間の暇つぶしを探せるアプリを公開しています。
mockのJSONデータを取得する
ng new アプリ名でAnuglarアプリを新規作成した際に、すでにsrc/assetsファイルがあると思うので、ここにわかりやすいようにmockフォルダを作り、jsonファイルを作成していきます。

yotei.json
{
  "yotei": [
    {
        "id": 1,
        "name": "東京国立博物館",
        "category": "芸術・教養",
        "prefecture": "東京"
    }
  ]
}呼び出したいcomponentでjsonファイルをimportします。
ここでは、例えば、top.componentでjsonファイルを呼び出したいので、以下のようにimportします。
import { Component, OnInit } from '@angular/core';
import YoteiJson from 'src/assets/mock/yotei.json';
@Component({
  selector: 'app-top',
  templateUrl: './top.component.html',
  styleUrls: ['./top.component.css']
})
export class TopComponent implements OnInit {もし、YoteiJsonのimportエラーが出た場合は、以下のようにtsconfig.jsonに2行追加してみてください。
{
  "compileOnSave": false,
  "compilerOptions": {
...省略...
    "resolveJsonModule": true, // 追加
    "allowSyntheticDefaultImports": true, // 追加
...省略...jsonファイルのデータを取得したい場合は、以下のようにすればデータを取得できます。
  /**
   * mockからデータを取得
   */
  public getYoteiData() {
    return YoteiJson.yotei;
  }試しにどんなデータが取得できているのかconsole.logで確認してみると、以下のように返ってくることがわかります。
  /**
   * mockからデータを取得
   */
  public getYoteiData() {
    console.log('data', YoteiJson.yotei);
    return YoteiJson.yotei;
  }
上記のデータからnameを値を取得したい場合は、
YoteiJson.yotei[0].name
と書けば取得できます。
JSONデータを画面に表示させる
html側で取得したjsonデータを表示させたい場合は、yoteiという変数に取得したjsonデータを突っ込み、
import { Component, OnInit } from '@angular/core';
import YoteiJson from 'src/assets/mock/yotei.json';
@Component({
  selector: 'app-top',
  templateUrl: './top.component.html',
  styleUrls: ['./top.component.css']
})
export class TopComponent implements OnInit {
  public yotei: any;
  constructor() { }
  ngOnInit(): void {
    this.yotei = this.getYoteiData();
  }
  /**
   * mockからデータを取得
   */
  public getYoteiData() {
    return YoteiJson.yotei;
  }html側では、*ngForを使えば、取得したデータの画面表示ができるでしょう。
  <div *ngFor="let y of yotei;">
    <table>
      <tr>
        <th>{{ y.id }}</th>
        <td>{{ y.name }}</td>
        <td>{{ y.category }}</td>
        <td>{{ y.prefecture }}</td>
      </tr>
    </table>
  </div>

休日で空いた時間の暇つぶしを探せるアプリを公開しています。






				
				
				
				
			
			
			
			
			
			
			
			
コメント