在Angular项目中如何读取json文件呢?

直接进入主题,我们的最终目得是要读取文件,那么首先我们需要先创建文件,

第一步:创建我们今天所需要在assets创建需要读取的文件Message.json,

如下:

[
    {
        "id": "E0001",
        "msg": "{0}の取得に失敗しました。"
    },
    {
        "id": "E0002",
        "msg": "更新に失敗しました。"
    },
    {
        "id": "E0003",
        "msg": "登録に失敗しました。"
    },
    {
        "id": "E0004",
        "msg": "削除に失敗しました。"
    },
    {
        "id": "E0005",
        "msg": "{0}の出力に失敗しました。"
    },
    {
        "id": "E0006",
        "msg": "{0}のインポートに失敗しました。"
    },
    {
        "id": "E0007",
        "msg": "自動トリアーシに失敗しました。"
    },
    {
        "id": "E0008",
        "msg": "{0}の取得に失敗しました。システム管理者に問い合わせてください"
    },
    {
        "id": "E0009",
        "msg": "{0}の登録に失敗しました。"
    },
    {
        "id": "E0010",
        "msg": "テンプレートファイルが存在しません。"
    },
    {
        "id": "E0011",
        "msg": "タイムアウトしました。"
    },

    {
        "id": "W0001",
        "msg": "正しいExcelファイルを選択してください。"
    },
    {
        "id": "W0002",
        "msg": "必須項目{0}が入力されていません。"
    },
    {
        "id": "W0003",
        "msg": "{0}が正しくありません。"
    },{
        "id": "W0004",
        "msg": "新しく登録された脆弱性情報はありません。"
    },
    {
        "id": "W0005",
        "msg": "管理番号が正しくありません。管理番号を修正し、再度インポートしてください。"
    },
    {
        "id": "W0006",
        "msg": "管理番号が空白のものがあります。管理番号を修正し、再度インポートしてください。"
    },
    {
        "id": "W0007",
        "msg": "管理番号が重複しています。管理番号を修正し、再度インポートしてください。"
    },
    {
        "id": "W0008",
        "msg": "管理番号{0}が重複しています。"
    },
    {
        "id": "W0009",
        "msg": "保存されていないCSイベントがあります。"
    },
    {
        "id": "W0010",
        "msg": "保存されていないイベント進捗があります。"
    },
    {
        "id": "W0011",
        "msg": "変更された項目がありません。"
    },
    {
        "id": "W0012",
        "msg": "削除できませんでした。"
    },
    {
        "id": "W0013",
        "msg": "更新できませんでした。"
    },
    {
        "id": "W0014",
        "msg": "該当する仕分けキーワードがありませんでした。"
    },
    {
        "id": "W0015",
        "msg": "他のユーザ({0})が先に更新しています。画面更新を行ってから、再入力をお願いします"
    },
    {
        "id": "W0016",
        "msg": "{0}に重複がありました。"
    },
    {
        "id": "W0017",
        "msg": "検索に一致する{0}がありませんでした。"
    },
    {
        "id": "W0018",
        "msg": "{0}が複数入力されています。"
    },
    {
        "id": "W0019",
        "msg": "{0}が全て入力されていません。"
    },
    {
        "id": "W0020",
        "msg": "統一キーワードに紐づく製品が既に登録されています。"
    },
    {
        "id": "W0021",
        "msg": "紐づく製品が存在しません。(統一キーワード:{0})"
    },
    {
        "id": "W0022",
        "msg": "該当する{0}がありません。"
    },
    {
        "id": "W0023",
        "msg": "統一キーワードがありません。"
    },
    {
        "id": "W0024",
        "msg": "入力内容が文字数制限を超えています。"
    },
    {
        "id": "W0025",
        "msg": "有効開始日は有効終了日を超えています。"
    },
    {
        "id": "W0026",
        "msg": "過去日付は入力できません。"
    },
    {
        "id": "C0001",
        "msg": "{0}の更新を行いますか?"
    },
    {
        "id": "C0002",
        "msg": "{0}の削除を行いますか?"
    },
    {
        "id": "C0003",
        "msg": "{0}の新規登録を行いますか?"
    },
    {
        "id": "C0005",
        "msg": "自動トリアージを行いますか?"
    },
    {
        "id": "C0006",
        "msg": "{0}をエクスポートします。よろしいですか?"
    },
    {
        "id": "C0007",
        "msg": "編集中の{0}があります。編集を破棄しますか?"
    },
    {
        "id": "I0001",
        "msg": "全件正常に取り込み完了しました。"
    },
    {
        "id": "I0002",
        "msg": "取り込み完了。取り込みに失敗した脆弱性情報があります"
    },
    {
        "id": "I0003",
        "msg": "新しく登録された脆弱性情報はありません。"
    },
    {
        "id": "I0004",
        "msg": "新しく登録された脆弱性情報はありません。取り込みに失敗した脆弱性情報があります。"
    },
    {
        "id": "I0005",
        "msg": "更新しました。"
    },
    {
        "id": "I0007",
        "msg": "削除しました。"
    },
    {
        "id": "I0008",
        "msg": "登録しました。"
    },
    {
        "id": "I0009",
        "msg": "更新しました。 変更を反映させる場合は更新ボタンを押してください。"
    },
    {
        "id": "I0010",
        "msg": "統一キーワードと紐づく製品を登録しました。"
    }
]

第二步:我们需要在services文件夹下创建一个共享サービス、之后把以下代码封装到共享サービス当中里去 ,之后再创建一个model。

/*
 * @Author: 
 * @Date: 2021-06-08 15:38:47
 * @LastEditTime: 2022-03-16 11:04:56
 * @LastEditors: Please set LastEditors
 * @Description: 
 */

import { HttpClient } from '@angular/common/http';
import { Component, Injectable } from '@angular/core';
import { MessageInfo } from '../../model/MessageInfo';



@Injectable({
  providedIn: 'root'
})
export class MessageService {

  static messageInfo: MessageInfo[];
  constructor(
    private http:HttpClient
    ) { 

  }

  /**
   * @description: 
   * @param {*}
   * @return {*}
   */  
  load() {
    const jsonFile =  `assets/config-files/message.json`;
    return new Promise<void>((resolve, reject) => {
      return  this.http.get<MessageInfo[]>(jsonFile).toPromise().then((response) => {
          MessageService.messageInfo = response as MessageInfo[];
           resolve();
        }).catch((response: any) => {
           reject(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
        });
    });

}

  static getMessage(id:string ,params?:string[]):string{
    var message:string="";
    for (let entry of this.messageInfo) {
      if(entry.id==id){
        var msg=entry.msg;
        if(params){
          for(var i=0;i<params?.length!;i++){
            msg=msg.replace("{"+i+"}",params![i]);
          }
        }
        return msg;
      }
    }
    return "";

  }

  /**
   * @description: メッセージ種別を取得
   * @param {string} メッセージid
   * @return {*} メッセージのモジュール
   */  
  static  getMessageType(id:string):any{
   
    var component:any;
  
    return component;
   
  }

  
}
/*
 * @Author: 
 * @Date: 2021-06-10 10:56:59
 * @LastEditTime: 2021-06-21 13:31:51
 * @LastEditors: 
 * @Description: 
 */

export interface MessageInfo {
  
    id:string,
    msg:string

}

最后在我们需要调用的方法里,调用我们在共享サービス创建的方法即可。

例如:

this .InformationinfoService.getAllDate().subscribe(
      res => {
        // 处理成功返回的数据
        console.log(res);
        this .rowData = res  as TestParms[]; 
        this .dateType = MessageService.getMessage( "C0005" ,[ "お知らせ" ]);
      },  
      (error) => {
        console.log( '詮索に失敗しました' , error);
        this .dateType = MessageService.getMessage( "C0008" ,[ "お知らせ" ]);
      },
    
       
   
     
    ) 

  

 

posted @ 2023-08-15 18:40  しゅおく  阅读(66)  评论(0编辑  收藏  举报