如何在javascript中将字符串转换为json对象

时间:2016-12-20 04:55:45

标签: javascript json

我有以下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)
}

但我仍然得到相同的输出。

3 个答案:

答案 0 :(得分:2)

  

注意:强烈谨慎。只检查这是否有效,它是否有效。不要在意外情况下使用它。 非常危险!

一个疯狂的事情是,您忘记了函数名称前面的function关键字。

尝试使用eval()

function data(spark, d) {
  // console.log('receive ', d);
  eval("d = " + d);
  console.log(d.id);
}
data("", "{id: 5}");

答案 1 :(得分:0)

四个答案:

  1. 让服务器发送正确形成的JSON(密钥名称周围有双引号)。这是首选解决方案。

  2. 使用宽松的JSON解析器。你可以在npm上搜索和找到这些东西。

  3. 使用eval

  4. 执行一些字符串操作以将id括在双引号中,这样您就可以JSON.parse,或者提取1或者您想要做的任何事情。这是最不受欢迎的解决方案。

答案 2 :(得分:-2)

eval(“(”+ data +“)”)。id是所有必需的

function data(spark, data) {
  alert(eval("(" + data + ")").id);
}

data("", "{id:3}");