2017-08-31 2 views
-1

Ich habe einen Fehler habe, während meine Json-Datei Parsen, die auf https://jsonlint.com/Fehler: Uncaught (in Versprechen): Syntaxerror: unerwartetes Token <in JSON

@Injectable() 
export class LightParserService{ 
    ITEMS_URL = "./lights.json"; 
    constructor(private http: Http) { 
    } 

    getItems(): Promise<Light[]> { 
    return this.http.get(this.ITEMS_URL).toPromise() 
    .then(resp => { 
     return resp.json() as Light[]; 
     }); 
    } 
} 

gültig ist, wenn ich meine Funktion in einer anderen Komponente verwenden:

lights : Light[] = []; 
getLights(): void{ 
     this.lightService.getItems().then(light => this.lights = light); 
    } 

auf meiner Website ich habe: Fehler: Uncaught (in Versprechen): Syntaxerror: unerwartetes Token < in JSON an Position 0

Wer weiß, wie dieses Problem beheben? Meine JSON-Datei ist gültig und mein Light-Objekt enthält gültige Felder, die ich nicht verstehe.

+6

überprüfen Sie die Antwort, die Sie vom Server erhalten. Das toskv

+0

Um das Problem "Uncaught (in promise)" zu beheben, sollten Sie einen '.catch (...)' Handler am Ende Ihrer Versprechungskette hinzufügen. – Bergi

Antwort

0

./lights.json wahrscheinlich zurückgegeben HTML anstelle von JSON, so dass Ihre resp.json() fehlschlägt. Sie können console.log(resp.text()) vor der return resp.json() as Light[]; Zeile hinzufügen, so dass Sie die rohe Antwort sehen können (oder Sie können es einfach in der Dev-Tools Netzwerk-Registerkarte loo)

+0

danke yeah Ich musste meine JSON-Datei in den Assets-Ordner legen sonst gab es mir HTML statt JSON. –

+0

wahrscheinlich, weil es eine 404-Fehlerseite zurückgegeben hat, sollten Sie den Statuscode überprüfen, nachdem Sie die Antwortanforderung erhalten haben, um solche Probleme zu bekommen –

Verwandte Themen