// 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);
我创建了上面的代码段来演示我遇到的问题。我收到的输入字符串可能是“on:true”,“on:false”,“bri:250”,“sat:13”等。将此数据发布到服务器时,工作的格式是在上面看作是“欲望的结果”。
但是,当在变量中取一个字符串(例如'on:true')并将其放在{}中时,它似乎总是创建一个字典,其中变量名称作为键,字符串本身作为值。
有人可以解释为什么会这样,以及如何绕过它?
答案 0 :(得分:1)
有人可以解释为什么这是
因为语法{ foo }
表示"创建一个对象,给它一个名为foo
的属性,给该属性赋予foo
变量的值。
如何解决它
解析数据。明确指定它。
首先将字符串拆分为:
。然后删除空白区域。然后测试第二个值是数字还是关键字。等等。
如果您收到的数据是标准格式,这将更容易。然后你可以使用现有的解析器。如果您可以控制输入:将其更改为有效的JSON,然后使用JSON.parse
。
答案 1 :(得分:-1)
您可以使用JSON.parse,但您需要向他提供有效的JSON。 你需要一个以下形式的字符串:
{"on":true}
使用JSON.parse(':“on”:true}')将返回所需的对象。