爲什麼我不能將字符串(JSON格式)轉換爲對象?JSON.parse不要將字符串轉換爲對象
這是從服務器接收到一個JSON格式的字符串js函數:
function GetData(){
xhr = new XMLHttpRequest;
xhr.open('GET', 'http://'+ ip + ":" + port + "/api/s", true);
xhr.onreadystatechange = function() {
if (xhr.status == 200 && xhr.readyState == 4) {
try {
var data = JSON.parse(xhr.responseText);
for (var i=0; i<data['result'].length; i++) {
...some operations here...
}
}
catch(e) {
console.log(e.message + " in " + xhr.responseText);
return}
}
}
xhr.send();
}
,但我得到的字符串,JSON.parse不行:
Cannot read property 'length' of undefined in "{\"result\":[{\"id\":1, \"region\":\"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0410\u0434\u044b\u0433\u0435\u044f\"}, {\"id\":2, \"region\":\"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0411\u0430\u0448\u043a\u043e\u0440\u0442\u043e\u0441\u0442\u0430\u043d\"}, {\"id\":3, \"region\" ... and so on ...
我不能讓JSON的長度-object屬性值,不能訪問它的屬性'result'等等。
但是爲什麼?
'data ['result']'是未定義的,但假設'data'中有一個result屬性。你是否檢查過'xhr.responseText'和'data'本身的值來判斷這個結構是否可能與你預期的稍有不同? – GolezTrol
你的JSON有問題。使用在線JSON檢查器檢查JSON:https://jsonlint.com/ – Bee157
在JSON.parse行後面查看輸出 –