首页 > 解决方案 > 未读取 Javascript 对象

问题描述

{"ma-steps":"{\"temp_token\":\"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859\",\"reload_ma\":true}","google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534}"

这是在我调用 JSON.stringify(payload)) 时打印的但是当我执行 var target = payload.ma-steps.temp_token;,它似乎不起作用我得到错误 ReferenceError: steps is not defined

标签: javascripthtmlcordova

解决方案


破折号 ,-表示减法,因此不能用于变量名。payload.ma-steps.temp_token被视为payload.ma减号steps.temp_token。它需要一个名为 的变量steps,该变量不存在,因此出现错误“未定义步骤”。

相反,您可以使用对象表示法来访问该属性。

let target = payload['ma-steps'];

的值似乎ma-steps是一个 JSON 格式的字符串,因此您需要在引用其中的任何属性之前对其进行解析。

let steps = JSON.parse(payload['ma-steps']);
let target = steps.temp_token;

这是一个工作示例:

var payload = {"ma-steps":"{\"temp_token\":\"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859\",\"reload_ma\":true}","google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534};

let steps = JSON.parse(payload['ma-steps']);
let target = steps.temp_token;

console.log(target);


推荐阅读