2017-08-31 122 views
-1

在分析我的JSON文件,當我用我的功能在另一個組分,它是在https://jsonlint.com/錯誤:未捕獲的(在承諾):語法錯誤:意外標記<在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[]; 
     }); 
    } 
} 

有效,我得到了一個錯誤:

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

在我的網站我有:錯誤:未捕獲的(在承諾):語法錯誤:在JSON意外標記<在位置0

有誰知道如何解決這一問題?我的JSON文件是有效的,我的Light對象包含有效的字段,所以我不明白。

+6

檢查您從服務器獲得的響應。 <通常會在您取回html內容而不是json時出現。所以也許服務器返回你沒有想到的東西。 – toskv

+0

要修復「未捕獲(承諾)」問題,您應該在承諾鏈的末尾添加一個'.catch(...)'處理程序。 – Bergi

回答

0

./lights.json可能返回了HTML而不是json,所以你的resp.json()失敗。您可以在return resp.json() as Light[];行之前添加console.log(resp.text()),這樣您可以看到原始響應(或者您可以簡單地在開發工具網絡選項卡中將其放回)

+0

謝謝是的,我需要把我的JSON文件的資產文件夾,否則它給了我的HTML而不是JSON。 –

+0

可能是因爲它返回了一個404錯誤頁面,您應該在獲取文件請求響應之後檢查狀態代碼以捕獲像這樣的問題 –

相關問題