文字列(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-checkerでチェックしてください:https://jsonlint.com/ – Bee157
JSON.parse行の後にconsole.log(データ)を試してみてください。出力は –