javascript - JSON.parse 在控制台中有效,但在运行脚本时无效

标签 javascript

这是我的文字:

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/

相关文章:

javascript - Quickblox 一对一聊天记录不起作用

javascript - 在脚本中添加CSS,这可能吗?

javascript - 结束播放功能不起作用的 HTML5 视频循环 src 更改

javascript - 如何在vue模板+laravel中使用计算函数显示变量

javascript - 到达 id 时更改 CSS

javascript - 关于大括号的 jsx 语法

javascript - 无法观察从多选列表中选择的 knockout 选项

javascript - HTML 复选框不起作用

javascript - 如何动态更改 Intersection Observer 的配置

javascript - 用 '.' 填充整个主体的 jQuery 代码