我有以下javascript方法。我尝试从data参数中获取id。
data(spark, data){
console.log('receive ', data)
console.log(data.id)
}
第一个输出行是receive {id:1}
但第二个输出行是undefined
然后我尝试使用以下方法将json字符串转换为object:
data(spark, data){
console.log('receive ', data)
console.log(JSON.parse(JSON.stringify(data)).id)
我仍然得到相同的输出。为什么我不能从输入参数中获取id?
EDIT1
我将参数名称更改为与函数名称不同,如下所示:
data(spark, d){
console.log('receive ', d)
console.log(JSON.parse(JSON.stringify(d)).id)
}
但我仍然得到相同的输出。
答案 0 :(得分:2)
注意:强烈谨慎。只检查这是否有效,它是否有效。不要在意外情况下使用它。 非常危险!
一个疯狂的事情是,您忘记了函数名称前面的function
关键字。
尝试使用eval()
:
function data(spark, d) {
// console.log('receive ', d);
eval("d = " + d);
console.log(d.id);
}
data("", "{id: 5}");
答案 1 :(得分:0)
四个答案:
让服务器发送正确形成的JSON(密钥名称周围有双引号)。这是首选解决方案。
使用宽松的JSON解析器。你可以在npm上搜索和找到这些东西。
使用eval
。
执行一些字符串操作以将id
括在双引号中,这样您就可以JSON.parse
,或者提取1
或者您想要做的任何事情。这是最不受欢迎的解决方案。
答案 2 :(得分:-2)
eval(“(”+ data +“)”)。id是所有必需的
function data(spark, data) {
alert(eval("(" + data + ")").id);
}
data("", "{id:3}");