Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未读取Javascript对象_Javascript_Html_Cordova - Fatal编程技术网

未读取Javascript对象

未读取Javascript对象,javascript,html,cordova,Javascript,Html,Cordova,当我调用JSON.stringify(有效负载))时,它会被打印出来 但是,当我执行var target=payload.ma steps.temp_token;,这似乎不起作用,我出错了 参考错误:未定义步数破折号,-,表示减法,因此不能在变量名称中使用payload.ma steps.temp_令牌被视为payload.ma减去steps.temp_令牌。它需要一个名为steps的变量,该变量不存在,因此出现错误“steps未定义” 相反,您可以使用对象表示法访问该属性 {"ma-steps

当我调用JSON.stringify(有效负载))时,它会被打印出来 但是,当我执行var target=payload.ma steps.temp_token;,这似乎不起作用,我出错了
参考错误:未定义步数

破折号,
-
,表示减法,因此不能在变量名称中使用
payload.ma steps.temp_令牌
被视为
payload.ma
减去
steps.temp_令牌
。它需要一个名为
steps
的变量,该变量不存在,因此出现错误“steps未定义”

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

{"ma-steps":"{\"temp_token\":\"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859\",\"reload_ma\":true}","google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534}"
似乎
ma steps
的值是一个JSON格式的字符串,因此在引用其中的任何属性之前,需要对其进行解析

let target = payload['ma-steps'];
以下是一个工作示例:

var-payload={“ma-steps”:“{“temp\u-token\”:“5DSED8DFSFFDFF0145059BD008A1A00247B92880BF9DE56B153B289C9463C3DBDA9F20F47FB9ACA94E82FFBA5DC2CD566F4C859\”,“reload\u-ma\:true}”,“google.message\u-id:“0:1591721468DFDSFSD”,“google.sent\u-time”:345543534};
让steps=JSON.parse(payload['ma-steps']);
让目标=steps.temp_令牌;

控制台日志(目标)我使用您的对象,它的工作原理与我在前面的评论中所说的相同。也许物体的形状不好

let对象={
“ma步骤”:{
临时令牌:
“5DSED8DFSFFDFF0145059BD008A1E1A00247B92880BF9DE56B153B289C9463C3DBDA9F20F47FB9ACA94E82FFBA5DC2CD566F4C859”,
乌马:是的
},
“google.message_id”:“0:159172111468DFDSD”,
“谷歌发送时间”:345543534
};
log(对象['ma-steps'].temp_令牌);

首先,
payload.ma-steps.temp_token==(payload.ma)-(steps.temp_token)
,并将引发异常,除非
payload.ma
steps.temp_token
都已定义且为数字。因此,您希望访问
有效负载['ma-steps'].temp_令牌


假设您的对象最初是:

const obj={
“妈妈的脚步声”:{
临时标记:“5DSED8DFSFFDFSFF0145059BD008A1E1A00247B92880BF9DE56B153B289C9463C3DBDA9F20F47FB9AC94E82FFBA5DC2CD566F4C859”,
乌马:是的
},
google.message_id:“0:159172111468dfdsdfsd”,
谷歌发送时间:345543534
};
返回的字符串是JSON.stringify(obj)

但是,如果您的对象实际上是:

const obj2={
“ma步骤”:“{”临时令牌\“:\”5DSED8DFSFFDFF0145059BD008A1E1A00247B92880BF9DE56B153B289C9463C3DBDA9F20F47FB9AC94E82FFBA5DC2CD566F4C859\”,“重新加载ma\”:true}”,
google.message_id:“0:159172111468dfdsdfsd”,
谷歌发送时间:345543534
};
JSON.stringify(obj2)
返回您所说的内容:

'{"ma-steps":{"temp_token":"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859","reload_ma":true},"google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534}'
但是,在本例中,
obj2['ma-steps']
是一个字符串,并且没有
temp_标记
属性。所以你必须做:

const-ma_-steps_-parsed=JSON.parse(obj2['ma-steps']);
const target=ma_steps_parsed.temp_标记;

payload['ma-steps'].临时令牌;我在temp_token partI上未定义,这两种情况下我都未定义。有效负载['ma-steps']返回{“temp_token”:“dfdsfdsfdsfsd”,“reload_fences”:true}“是的。它就是这样工作的,让steps=JSON.parse(有效负载['ma-steps']));您提供的ma步骤部分可以工作,但reload_ma没有定义。奇怪的是,它可以在web上工作,但不能在使用Cordova的android mobile上工作。所以问题在于Cordova,而不是Javascript对象
'{"ma-steps":{"temp_token":"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859","reload_ma":true},"google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534}'
'{"ma-steps":"{\"temp_token\":\"5dsed8dfsfsfdfdfsff0145059bd008a1e1a00247b92880bf9de56b153b289c9463c3dbda9f20f47fb9aca94e82ffba5dc2cd566f4c859\",\"reload_ma\": true}","google.message_id":"0:15917211468dfdsfsdfsd","google.sent_time":345543534}'