节点JS字符串里面的卷曲括号

时间:2017-09-13 12:44:18

标签: javascript

  // My input String
  // Could be on : true, on : false, bri : 255, etc, etc
  var inputString = 'on : true'
  console.log(inputString);
  var wrongResult = { inputString }
  console.log(wrongResult);

  // The result that I am trying to achieve
  var desiredResult = {
    on : true
  }
  console.log(desiredResult);

运行它:https://repl.it/LCDt/4

我创建了上面的代码段来演示我遇到的问题。我收到的输入字符串可能是“on:true”,“on:false”,“bri:250”,“sat:13”等。将此数据发布到服务器时,工作的格式是在上面看作是“欲望的结果”。

但是,当在变量中取一个字符串(例如'on:true')并将其放在{}中时,它似乎总是创建一个字典,其中变量名称作为键,字符串本身作为值。

有人可以解释为什么会这样,以及如何绕过它?

2 个答案:

答案 0 :(得分:1)

  

有人可以解释为什么这是

因为语法{ foo }表示"创建一个对象,给它一个名为foo的属性,给该属性赋予foo变量的值。

  

如何解决它

解析数据。明确指定它。

首先将字符串拆分为:。然后删除空白区域。然后测试第二个值是数字还是关键字。等等。

如果您收到的数据是标准格式,这将更容易。然后你可以使用现有的解析器。如果您可以控制输入:将其更改为有效的JSON,然后使用JSON.parse

答案 1 :(得分:-1)

您可以使用JSON.parse,但您需要向他提供有效的JSON。 你需要一个以下形式的字符串:

    {"on":true}

使用JSON.parse(':“on”:true}')将返回所需的对象。