这是我的文字:
handleMyKeys(res) {
// console.log(res);
console.log("text" + this.responseText); //line 12
let json = JSON.parse(this.responseText);
console.log("Output is" + json.keys); //line 14
console.log(window.mykeys);
if (json.keys) {
window.mykeys.setState({keys: json.keys});
}
}
它为 json.keys 打印出 undefined。
但是,当我在控制台中运行相同的操作时,我得到了一个具有 .keys 属性的有效 JSON 对象。为什么?
"{\"keys\":[\"itchio\",\"quantumitch\"]}" MyKeys.js:12
Output isundefined MyKeys.js:14
Object { props: Object, context: Object, refs: Object, updater: Object, _reactInternalFiber: Object, _reactInternalInstance: Object, state: Object } MyKeys.js:15
x = "{\"keys\":[\"itchio\",\"quantumitch\"]}";
"{"keys":["itchio","quantumitch"]}"
JSON.parse("{\"keys\":[\"itchio\",\"quantumitch\"]}");
Object { keys: Array[2] }
y = JSON.parse("{\"keys\":[\"itchio\",\"quantumitch\"]}")
Object { keys: Array[2] }
y.keys
Array [ "itchio", "quantumitch" ]
最佳答案
根据您的控制台输出,您的输入似乎已被编码两次。
比较以下两个语句的控制台输出:
console.log("{\"keys\":[\"itchio\",\"quantumitch\"]}");
console.log("\"{\\\"keys\\\":[\\\"itchio\\\",\\\"quantumitch\\\"]}\"");
第二个命令的输出对应于您在控制台中看到的内容,表明您正在处理的字符串被转义了两次。
检查您收到的响应内容,或执行 typeof JSON.parse(this.responseText)
进行验证。
关于javascript - JSON.parse 在控制台中有效,但在运行脚本时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179702/