Подтвердить что ты не робот

Как получить JSON файл в Angular 2

поскольку я новичок в Angular, может ли кто-нибудь дать простое решение по загрузке данных файла JSON с помощью angular 2.

Мой код выглядит ниже

Index.html

<html>
  <head>
    <title>Angular 2 QuickStart</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="css/styles.css">
    <!-- 1. Load libraries -->
     <!-- Polyfill(s) for older browsers -->
    <script src="node_modules/core-js/client/shim.min.js"></script>
    <script src="node_modules/zone.js/dist/zone.js"></script>
    <script src="node_modules/reflect-metadata/Reflect.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <!-- 2. Configure SystemJS -->
    <script src="systemjs.config.js"></script>
    <script>
      System.import('app').catch(function(err){ console.error(err); });
    </script>
  </head>
  <!-- 3. Display the application -->
  <body>
    <my-app>Loading...</my-app>
  </body>
</html>
4b9b3361

Ответ 1

Вот часть моего кода, который анализирует JSON, это может быть полезно для вас:

import { Component, Input } from '@angular/core';
import { Injectable }     from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

@Injectable()
export class AppServices{

    constructor(private http: Http) {
         var obj;
         this.getJSON().subscribe(data => obj=data, error => console.log(error));
    }

    public getJSON(): Observable<any> {
         return this.http.get("./file.json")
                         .map((res:any) => res.json())
                         .catch((error:any) => console.log(error));

     }
}

Ответ 2

Сохраните файл json в каталоге Assets (параллельно с dir).

Обратите внимание, что если бы вы сгенерировали с новым новым именем YourAppname - этот каталог ресурсов существует в той же строке с каталогом "app", а служба должна быть дочерней папкой каталога приложения. Может выглядеть следующим образом:

:: приложения/услуги/myservice.ts

getOrderSummary(): Observable {
    // get users from api
    return this.http.get('assets/ordersummary.json')//, options)
        .map((response: Response) => {
            console.log("mock data" + response.json());
            return response.json();
        }
    )
    .catch(this.handleError);
} 

Ответ 3

Если вы используете angular -cli Храните файл json в папке "Каталог ресурсов" (параллельно с dir).

return this.http.get('<json file path inside assets folder>.json'))
    .map((response: Response) => {
        console.log("mock data" + response.json());
        return response.json();
    }
    )
    .catch(this.handleError);
}

Примечание: здесь вам нужно только указать путь в папке с ресурсами, например assets/json/oldjson.json, тогда вам нужно написать путь, как /json/oldjson.json

Если вы используете webpack, вам нужно следовать над той же структурой внутри общей папки, что и аналогичная папка с ресурсами.

Ответ 4

Вам нужно сделать HTTP-вызов для games.json для его получения. Что-то вроде:

this.http.get(./app/resources/games.json).map

Ответ 5

Как импортировать json в TypeScript/Angular2/4

В ES6/ES2015 вы можете импортировать json файл в свой код. Например,

Учитывая, что у вас есть этот example.json файл:

{
    "name": "nadeem"
}

Вы можете импортировать его в ES6/ES2015 следующим образом.

// ES6/ES2015
// app.js
import * as data from './example.json';
const myname= data.name;
console.log(myname); // output 'nadeem'

однако, тот же код будет вызывать ошибку:

Не удается найти модуль 'example.json'

Решение: использование имени модуля подстановок

В TypeScript версии 2 + мы можем использовать подстановочный знак в имени модуля. В файле определения TS, например. typings.d.ts, вы можете добавить эту строку:

declare module "*.json" {
    const value: any;
    export default value;
}

Также укажите, что значение имеет тип <any>, вы можете его настроить

Voila Это все, что вам нужно сделать.

Надеюсь, это сэкономит время и обычный HTTP-запрос!

Ответ 6

В Angular 5

вы можете просто сказать

this.http.get<Example>('assets/example.json')

Это даст вам Observable<Example>

Ответ 7

Я думаю, что папка с ресурсами общедоступна, вы можете получить к ней доступ непосредственно в браузере

http://localhost:4020/assets/

в отличие от других приватных папок, отпустите свой json файл в папке с ресурсами