下面我有一些代碼來變換獲取JSON字符串成,取下牙套,它解析爲一個地圖變量:我是否將地圖變量正確設置爲提取的json?
let result = '';
let map = [];
fetch(link)
.then(function(response) {
return response.json();
}).then(function(json) {
result = JSON.stringify(json); //json here is like [{'a':1,'a2':2},{'b':11,'b2':12}]
result = result.substring(1, result.length - 1);
map = JSON.parse(result);
}).catch(function(ex) {
console.log('parsing failed', ex);
});
我試圖簡單地設置map=json
但都給出了同樣的錯誤我有地圖重複的鍵。
如果我硬編碼我的map
變量可以說[{'id':1,code: 007},{'id':2, code:014}]
它的作品。我已經嘗試將result
更改爲字符串並將其完全作爲示例登錄。換句話說,設置map=json
應該首先工作。
我想我可能會錯過一些東西。它是什麼?
編輯#1:
fetch(link)
.then(function(response) {
return response.json();
}).then(function(json) {
setData(json);
document.getElementById("result").innerHTML = json;
}).catch(function(ex) {
console.log('parsing failed', ex);
});
function setData(json) {
map = json;
}
我試過,只是沒有response ok
部分由Naomik給出的解決方案。 我仍然收到與map = json
相同的錯誤。任何幫助?
是什麼在'json'參數第二'。那麼()'包含哪些內容?它不是一個字符串嗎?如果將方括號從[['a':1,'a2':2},{'b':11,'b2':12}]'中刪除,順便說一句,您可以使用'.slice (1,-1)',你最終會得到一些無效的JSON。 – nnnnnn
你正在做同樣的事情,你只是將'map = ...'移到另一個函數。您將**從不**能夠訪問回調鏈之外的數據*。閱讀[「我如何返回來自異步調用的響應?」](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)和[「爲什麼我的變量沒有改變後,我修改它的功能?」](http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside功能異步) – naomik
這些問題有數百個upvotes,因爲它們非常常見。瞭解異步編程是一個艱難的攀登,但一旦掌握了它,這很容易。 – naomik