将“{key1 = value1,key2 = value2}”格式转换为对象

时间:2012-02-13 15:45:27

标签: javascript

我有一些字符串格式如下:

'{key1=value1, key2=value2}'

将使用此格式的字符串转换为JavaScript对象的最佳方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:3)

你几乎可以解析JSON:

JSON.parse('{key1=value1, key2=value2}'.replace(/=/g,":"))

编辑将键作为字符串(thx @MattGreer):

JSON.parse('{key1=value1, key2=value2}'.replace(/(\w+)=/g, '"$1":'))

编辑将值作为字符串(thx @ajsie):

JSON.parse('{key1=value1, key2=value2}'.replace(/(\w+)=(\w+)/g, '"$1":"$2"'))

答案 1 :(得分:1)

这可行。虽然没经过测试。

var data = '{key1=value1, key2=value2}',
    values = data.match(/\w+=\w+/g),
    newObject = {},
    i, value;

for (i=0; i < values.length; i++) {
  value = values[i].split('=');
  newObject[value[0]] = value[1] ;
};

答案 2 :(得分:0)

在这种格式中,没有任何内置功能可以帮助您。这不是一个有效的对象文字,因此eval将失败(无论如何应该避免使用eval),并且它不是一个JSON字符串,因此JSON.parse也会失败。你能按摩格式吗?如果你能得到它{"key1": value1, "key2": value2 },那么我提到的两件事都可以开箱即用。 JSON.parse尤其会很好:

var resultingObject = JSON.parse('{"key1": value1, "key2": value2 }')

将数据按到有效的JSON格式(可能)比尝试编写自己的解析器更容易。但是如果您对格式没有选择,那么解析器可能是您唯一的选择。

绝望中,通过暴力将格式转换为JSON的粗略函数(将所有'='替换为':',将引号中的键包裹起来,可能通过正则表达式)都可以,但它会很脆弱。

答案 3 :(得分:0)

如果值是数字,而不是字符串,并且信息来自可靠来源,那么您只需eval字符串。

如果值可以包含字符串,那么您需要解析它。

补充:oops,我忘了键/值分隔符是冒号,而不是等号。 @sinsedrix解决方案很好,除了你需要评估它,因为它仍然是无效的JSON。 (JSON要求键是字符串,而不是裸字。)