创建一个没有JSON.parser

时间:2015-11-23 00:03:31

标签: javascript json parsing

我正在尝试创建一个解析JSON文本的函数。



function JSONParser(string) {
  //CODE HERE
  string = string.replace(/"/g, "");

  var obj = {};
  obj[0] = string;
  string = obj[0].replace(/'/g, "");

  return string;
}




我只对对象做了那个时髦的事情因为.replace似乎没有第二次直接在字符串上工作。

当我通过检查程序运行此代码时。我明白了......



JSONParser(JSON.stringify(true));
"true"




我的目标是返回布尔值true而不是字符串。

有谁知道为什么我仍然得到双引号的回报?更改字符串对象比删除引号更多吗?或者,我只是试图错误地删除它们?

非常感谢任何帮助。 TIA

-Lea

1 个答案:

答案 0 :(得分:2)

因为它仍然是一个字符串,所以控制台用引号(作为装饰)显示它。

请记住,当您执行var foo = "true"时,引号实际上不是字符串的一部分,因此无需删除它们。您的控制台只是将它们显示为指示其显示的数据类型的方式。他们实际上并不存在。

如果你想要一个布尔值,你可以这样做:

function JSONParser(string) {
  return string === "true" ? true :
         string === "false" ? false : string;
}

console.log(JSONParser(JSON.stringify(true)));

如果字符串既不是"true"也不是"false",它只返回原始字符串。

如果您更喜欢if语句,那么:

function JSONParser(string) {
  if (string === "true") {
    return true;
  } else if (string === "false") {
    return false;
  } else {
    return string;
  }
}

console.log(JSONParser(JSON.stringify(true)));

或者switch声明也很有用。