Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
角度:错误语法错误:意外标记<;在JSON中的位置0_Json_Angular_Http_Observable - Fatal编程技术网

角度:错误语法错误:意外标记<;在JSON中的位置0

角度:错误语法错误:意外标记<;在JSON中的位置0,json,angular,http,observable,Json,Angular,Http,Observable,嗨,我需要帮助我创建了一个angular服务,但是当我想查看json文件中的数据时,它显示了这个错误,我尝试了很多不成功的解决方案 app.component.ts import {Component, OnInit} from '@angular/core'; import {Car} from './domain/car'; import {CarService} from './service/carservice'; @Component({

嗨,我需要帮助我创建了一个angular服务,但是当我想查看json文件中的数据时,它显示了这个错误,我尝试了很多不成功的解决方案

app.component.ts

    import {Component, OnInit} from '@angular/core';
    import {Car} from './domain/car';
    import {CarService} from './service/carservice';

    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css'],
      providers: [CarService]
    })
    export class AppComponent implements OnInit {
      cars1: Car[];
      constructor(private carService: CarService) { }

      ngOnInit() {
       this.carService.getCarsSmall().subscribe(cars => this.cars1 = cars);
      }
    }
carservice.ts

@Injectable()
export class CarService {

  private jsonUrl = './cars-smalll.json';

  constructor(private http: Http) {}
    getCarsSmall(): Observable<Car[]> {
      return this.http.get(this.jsonUrl)
        .map(this.extractData)
        .catch(this.handleError);
    }

    private extractData(res: Response) {
      let body = res.json();
      return body.data || { };
    }
    private handleError (error: Response | any) {
      // In a real world app, you might use a remote logging infrastructure
      let errMsg: string;
      if (error instanceof Response) {
        const body = error.json() || '';
        const err = body.error || JSON.stringify(body);
        errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
      } else {
        errMsg = error.message ? error.message : error.toString();
      }
      console.error(errMsg);
      return Observable.throw(errMsg);
    }
}

提前感谢。

除了使用评论中建议的正确路径外,您的问题在于您试图从不存在的内容中提取数据。看看你的json,它是一个数组。但是在
extractData
-函数中,您试图从对象
data
中提取数据,这当然不存在于JSON中。因此,将该函数更改为:

private extractData(res: Response) {
  let body = res.json();
  // return just the response, or an empty array if there's no data
  return body || []; 
}

这应该可以做到,还可以更正JSON文件的路径。

此错误几乎总是由服务器配置问题引起的,而不是由角度问题引起的。服务器正在发送一个HTML文档,而不是一个javascript文件。您在这里使用的是什么服务器,您的服务器的路由配置是什么样子的?或者模拟JSON路径不正确,您在浏览器的网络日志中看到了什么?感谢Claies的回复,所以在我的例子中,我想使用存储在相同结构中的JSON文件(src/app/data/cars smalll.JSON)在assets下添加Json文件,然后运行我尝试将Json放在assets文件夹中,我将Json的路径更改为(/src/app/assets/cars smalll.Json),但我得到了相同的错误非常感谢,你帮了我的忙我没有注意到,有一点是,在我的情况下,Json路径是以下(../../../assets/data/cars small.Json),这对我有效,很高兴听到这有帮助!祝你有一个愉快的一天和哈阿皮编码!:)
private extractData(res: Response) {
  let body = res.json();
  // return just the response, or an empty array if there's no data
  return body || []; 
}